home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / FASTCAISSE / Setup FASTCAISSE.exe / {app} / createbase.sql < prev    next >
Text File  |  2007-06-05  |  59KB  |  2,677 lines

  1. DECLARE EXTERNAL FUNCTION ABS
  2. DOUBLE PRECISION
  3. RETURNS DOUBLE PRECISION BY VALUE 
  4. ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';
  5.  
  6.  
  7. DECLARE EXTERNAL FUNCTION SUBSTR
  8. CSTRING(80) CHARACTER SET NONE, SMALLINT, SMALLINT
  9. RETURNS CSTRING(80) CHARACTER SET NONE FREE_IT
  10. ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
  11.  
  12.  
  13. DECLARE EXTERNAL FUNCTION SUBSTRLEN
  14. CSTRING(32000) CHARACTER SET NONE, SMALLINT, SMALLINT
  15. RETURNS CSTRING(255) CHARACTER SET NONE FREE_IT
  16. ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf';
  17.  
  18.  
  19. /* Domain definitions */
  20. CREATE DOMAIN "COEFF" AS DECIMAL(5, 3);
  21. CREATE DOMAIN "EURO" AS DECIMAL(14, 4);
  22. CREATE DOMAIN "EURO2" AS DECIMAL(12, 2);
  23. CREATE DOMAIN "POURCENT" AS DECIMAL(5, 2);
  24. CREATE DOMAIN "QUANTITE" AS DECIMAL(6, 2);
  25. CREATE DOMAIN "TCODEBARRE" AS VARCHAR(13);
  26. CREATE DOMAIN "T_BOOLEAN" AS SMALLINT
  27.      DEFAULT 0;
  28. CREATE DOMAIN "UNITES" AS VARCHAR(3);
  29.  
  30. /* Table: ADRESSES, Owner: SYSDBA */
  31.  
  32. CREATE TABLE "ADRESSES" 
  33. (
  34.   "INDX"    INTEGER NOT NULL,
  35.   "ADRESSE"    VARCHAR(45),
  36.   "ADRESSE2"    VARCHAR(45),
  37.   "LOCALITE"    VARCHAR(45),
  38.   "CODEPOSTAL"    VARCHAR(8),
  39.   "VILLE"    VARCHAR(45),
  40.   "PAYS"    SMALLINT,
  41.  PRIMARY KEY ("INDX")
  42. );
  43.  
  44. /* Table: ARTFOUR, Owner: SYSDBA */
  45.  
  46. CREATE TABLE "ARTFOUR" 
  47. (
  48.   "INDEXAF"    INTEGER NOT NULL,
  49.   "INDXART"    INTEGER,
  50.   "CODEFOUR"    INTEGER,
  51.   "REFFOURN"    VARCHAR(18),
  52.   "DPA"    "EURO",
  53.   "DATEACHAT"    DATE,
  54.   "DELAIAPPR"    INTEGER,
  55.   "FRAISFIXE"    "EURO2",
  56.   "DATECREAT"    DATE DEFAULT 'NOW',
  57.   "QMIN"    "QUANTITE"   DEFAULT 1,
  58.   "QMAX"    "QUANTITE"   DEFAULT 1,
  59.   "CONDACHAT"    DECIMAL(11, 2) default 1,
  60.   "LOT"    DECIMAL(11, 2) DEFAULT 1,
  61.  PRIMARY KEY ("INDEXAF")
  62. );
  63.  
  64. /* Table: ARTICLES, Owner: SYSDBA */
  65.  
  66. CREATE TABLE "ARTICLES" 
  67. (
  68.   "INDX"    INTEGER NOT NULL,
  69.   "RAYON"    SMALLINT,
  70.   "FAMILLE"    SMALLINT,
  71.   "SSFAMILLE"    SMALLINT,
  72.   "CODEMAG"    VARCHAR(18),
  73.   "CODEBARRE"    VARCHAR(14),
  74.   "GRTAILLE"    SMALLINT,
  75.   "TAILLE"    SMALLINT,
  76.   "GRCOULEUR"    SMALLINT,
  77.   "COULEUR"    SMALLINT,
  78.   "TVA"    SMALLINT,
  79.   "TPF"    SMALLINT,
  80.   "PMPA"    "EURO2",
  81.   "CALCULPRI"    SMALLINT,
  82.   "PCPROMO"    "POURCENT",
  83.   "DEBPROMO"    DATE,
  84.   "FINPROMO"    DATE,
  85.   "PCSOLDE"    "POURCENT",
  86.   "DEBSOLDE"    DATE,
  87.   "FINSOLDE"    DATE,
  88.   "STOCKMIN"    DECIMAL(11, 2),
  89.   "DATECREAT"    DATE DEFAULT 'NOW',
  90.   "DATEMODIF"    DATE,
  91.   "DATEINVEN"    DATE,
  92.   "DATEVENTE"    DATE,
  93.   "POID"    DECIMAL(11, 2),
  94.   "VOLUME"    DECIMAL(11, 2),
  95.   "DERFOUR"    INTEGER,
  96.   "CONDVENTE"    DECIMAL(11, 2) DEFAULT 1,
  97.   "RESERVE"    "QUANTITE"   DEFAULT 0,
  98.   "DISPO"    "QUANTITE"   DEFAULT 0,
  99.   "EN_COMMANDE"    "QUANTITE"   DEFAULT 0,
  100.   "EN_PRET"    "QUANTITE"   DEFAULT 0,
  101.   "EN_SAV"    "QUANTITE"   DEFAULT 0,
  102.   "BL_CLIENT"    "QUANTITE"   DEFAULT 0,
  103.   "INVENTAIRE"    "QUANTITE"   DEFAULT 0,
  104.   "INDXIMAGE"    INTEGER,
  105.   "TEMP"    SMALLINT DEFAULT 0,
  106.   "PKEYR"     COMPUTED BY (RAYON*10000+FAMILLE*100+SSFAMILLE),
  107.   "LINKART"    INTEGER,
  108.   "LINKMACRO"    INTEGER,
  109.   "REAP_MIN"    "T_BOOLEAN",
  110.   "REAP_MAX"    "T_BOOLEAN",
  111.   "SUIVI"    "T_BOOLEAN",
  112.   "STOCKMAX"    NUMERIC(11, 2) DEFAULT 0,
  113.   "DIM_1"    DECIMAL(11, 2),
  114.   "DIM_2"    DECIMAL(11, 2),
  115.   "DIM_3"    DECIMAL(11, 2),
  116.   "DPAUHT"    "EURO",
  117.   "STOCK_DISPO"     COMPUTED BY (DISPO-RESERVE),
  118.   "FAVORI"    "T_BOOLEAN",
  119.   "COULEUR1"    DECIMAL(18, 0),
  120.   "COULEUR2"    DECIMAL(18, 0),
  121.   "INDXPACK"    SMALLINT,
  122.   "QTEPACK"    DECIMAL(6, 2),
  123.   "INDX_UNITES"    SMALLINT,
  124.   "INDX_ETIQUETTE"    INTEGER,
  125.   "SAUTER_A"    SMALLINT,
  126.   "INDX_BLOB_COMMENTAIRE"    INTEGER,
  127.   "HORS_CA"    "T_BOOLEAN",
  128.   "TYPEMARGE"    SMALLINT,
  129.   "MARGE"    DECIMAL(14, 6),
  130.   "RETOUR"    VARCHAR(18),
  131.   "NOMENCLATURE"    VARCHAR(30),
  132.   "PAYS_ORIGINE"    SMALLINT,
  133.  PRIMARY KEY ("INDX")
  134. );
  135.  
  136. /* Table: BLOBS, Owner: SYSDBA */
  137.  
  138. CREATE TABLE "BLOBS" 
  139. (
  140.   "INDX"    INTEGER NOT NULL,
  141.   "TEXTE"    BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  142.  PRIMARY KEY ("INDX")
  143. );
  144.  
  145. /* Table: BUNDLE, Owner: SYSDBA */
  146.  
  147. CREATE TABLE "BUNDLE" 
  148. (
  149.   "INDX_1"    INTEGER NOT NULL,
  150.   "INDX_2"    INTEGER NOT NULL,
  151.   "QTE"    DECIMAL(11, 2)
  152. );
  153.  
  154. /* Table: CAISSES, Owner: SYSDBA */
  155.  
  156. CREATE TABLE "CAISSES" 
  157. (
  158.   "INDX"    SMALLINT NOT NULL,
  159.   "NOM"    VARCHAR(35),
  160.   "SOLDE"    DECIMAL(12, 2),
  161.   "DATESOLDE"    TIMESTAMP,
  162.   "VENDEUR"    SMALLINT,
  163.  PRIMARY KEY ("INDX")
  164. );
  165.  
  166. /* Table: CHAINES, Owner: SYSDBA */
  167.  
  168. CREATE TABLE "CHAINES" 
  169. (
  170.   "PKEY"    INTEGER NOT NULL,
  171.   "TYPEC"    SMALLINT,
  172.   "LIGNE"    SMALLINT,
  173.   "COLONNE"    SMALLINT,
  174.   "DESIGNATION"    VARCHAR(35),
  175.   "CODELANGUE"    SMALLINT DEFAULT 1,
  176.   "NOLIGNE"    SMALLINT,
  177.  PRIMARY KEY ("PKEY")
  178. );
  179.  
  180. /* Table: CLIENTS, Owner: SYSDBA */
  181.  
  182. CREATE TABLE "CLIENTS" 
  183. (
  184.   "INDX"    INTEGER NOT NULL,
  185.   "CODEMAGASIN"    VARCHAR(15),
  186.   "CIVILITE"    SMALLINT,
  187.   "NOM"    VARCHAR(30),
  188.   "PRENOM"    VARCHAR(20) DEFAULT '',
  189.   "FACTURATION"    SMALLINT,
  190.   "TELEPHONE"    VARCHAR(20),
  191.   "TELECOPIE"    VARCHAR(20),
  192.   "GSM"    VARCHAR(15),
  193.   "WWW"    VARCHAR(60),
  194.   "EMAIL"    VARCHAR(60),
  195.   "CONTACT"    VARCHAR(20),
  196.   "ENCOURS"    "EURO2",
  197.   "REMISE"    "POURCENT",
  198.   "ESCOMPTE"    "EURO2",
  199.   "NOMBANQUE"    VARCHAR(20),
  200.   "RIBBANQUE"    VARCHAR(5),
  201.   "RIBGUICHET"    VARCHAR(5),
  202.   "RIBCOMPTE"    VARCHAR(12),
  203.   "RIBCLE"    VARCHAR(2),
  204.   "COMPTGENE"    VARCHAR(13),
  205.   "COMPTAUXI"    VARCHAR(13),
  206.   "NIFCEE"    VARCHAR(14),
  207.   "SECTEUR"    SMALLINT,
  208.   "CATOTAL"    "EURO2",
  209.   "DERNIERMONTANT"    "EURO2",
  210.   "DATECREATION"    DATE DEFAULT 'NOW',
  211.   "DATEMODIF"    DATE,
  212.   "TARIF"    SMALLINT,
  213.   "PLAFOND"    "EURO2",
  214.   "ACOMPTE"    "EURO2",
  215.   "AVOIR"    "EURO2",
  216.   "MAILING"    SMALLINT,
  217.   "DATEANNI"    DATE,
  218.   "DATELIBRE"    DATE,
  219.   "NBRPASSAGES"    SMALLINT,
  220.   "DERNPASSAGE"    DATE DEFAULT 'NOW',
  221.   "FLAGS"    SMALLINT default 0,
  222.   "TEMP"    SMALLINT DEFAULT 0,
  223.   "INDX_COMMENTAIRE"    INTEGER,
  224.   "INDX_LISTE"    INTEGER,
  225.   "INDX_ADR1"    INTEGER,
  226.   "INDX_ADR2"    INTEGER,
  227.   "CODELANGUE"    SMALLINT DEFAULT 1,
  228.   "TYPEREG"    SMALLINT DEFAULT 0,
  229.   "TITULAIRE"    VARCHAR(40),
  230.   "INDX_IBAN"    INTEGER,
  231.  PRIMARY KEY ("INDX")
  232. );
  233.  
  234. /* Table: CP_VILLE, Owner: SYSDBA */
  235.  
  236. CREATE TABLE "CP_VILLE" 
  237. (
  238.   "INDX"    INTEGER NOT NULL,
  239.   "VILLE"    VARCHAR(22)
  240. );
  241.  
  242. /* Table: DESIGNATIONS, Owner: SYSDBA */
  243.  
  244. CREATE TABLE "DESIGNATIONS" 
  245. (
  246.   "INDXART"    INTEGER NOT NULL,
  247.   "CODELANGUE"    SMALLINT NOT NULL,
  248.   "TEXTE"    VARCHAR(60),
  249.  PRIMARY KEY ("INDXART", "CODELANGUE")
  250. );
  251.  
  252. /* Table: ECHEANCES, Owner: SYSDBA */
  253.  
  254. CREATE TABLE "ECHEANCES" 
  255. (
  256.   "NUM"    INTEGER,
  257.   "INDEXPIECE"    INTEGER NOT NULL,
  258.   "DATE_ECHEANCE"    DATE,
  259.   "TYPE_ECHEANCE"    SMALLINT,
  260.   "NBR_ECHEANCES"    SMALLINT,
  261.   "NBRMAX"    SMALLINT
  262. );
  263.  
  264. /* Table: ETATS, Owner: SYSDBA */
  265.  
  266. CREATE TABLE "ETATS" 
  267. (
  268.   "INDX"    INTEGER NOT NULL,
  269.   "NOM"    VARCHAR(200),
  270.   "FRF"    BLOB SUB_TYPE 0 SEGMENT SIZE 80,
  271.  PRIMARY KEY ("INDX")
  272. );
  273.  
  274. /* Table: FOURNISSEURS, Owner: SYSDBA */
  275.  
  276. CREATE TABLE "FOURNISSEURS" 
  277. (
  278.   "INDX"    INTEGER NOT NULL,
  279.   "CODEMAGASIN"    VARCHAR(15),
  280.   "CIVILITE"    SMALLINT,
  281.   "NOM"    VARCHAR(30),
  282.   "PRENOM"    VARCHAR(20) DEFAULT '',
  283.   "FACTURATION"    SMALLINT,
  284.   "TELEPHONE"    VARCHAR(20),
  285.   "TELECOPIE"    VARCHAR(20),
  286.   "GSM"    VARCHAR(15),
  287.   "WWW"    VARCHAR(60),
  288.   "EMAIL"    VARCHAR(60),
  289.   "CONTACT"    VARCHAR(20),
  290.   "ENCOURS"    "EURO2",
  291.   "REMISE"    "EURO2",
  292.   "ESCOMPTE"    "EURO2",
  293.   "NOMBANQUE"    VARCHAR(20),
  294.   "RIBBANQUE"    VARCHAR(5),
  295.   "RIBGUICHET"    VARCHAR(5),
  296.   "RIBCOMPTE"    VARCHAR(12),
  297.   "RIBCLE"    VARCHAR(2),
  298.   "COMPTGENE"    VARCHAR(13),
  299.   "COMPTAUXI"    VARCHAR(13),
  300.   "NIFCEE"    VARCHAR(14),
  301.   "SECTEUR"    SMALLINT,
  302.   "CATOTAL"    "EURO2",
  303.   "DERNIERMONTANT"    "EURO2",
  304.   "DATECREATION"    DATE DEFAULT 'NOW',
  305.   "DATEMODIF"    DATE,
  306.   "DELAI"    SMALLINT,
  307.   "COMMENTAIRE"    VARCHAR(30),
  308.   "FRANCO"    "EURO2",
  309.   "DERNIERECOMMANDE"    DATE,
  310.   "FLAGS"    SMALLINT default 0,
  311.   "TEMP"    SMALLINT DEFAULT 0,
  312.   "INDX_COMMENTAIRE"    INTEGER,
  313.   "INDX_LISTE"    INTEGER,
  314.   "INDX_ADR1"    INTEGER,
  315.   "INDX_ADR2"    INTEGER,
  316.   "CODELANGUE"    SMALLINT DEFAULT 1,
  317.   "TYPEREG"    SMALLINT DEFAULT 0,
  318.   "REGROUPE"    "T_BOOLEAN"  DEFAULT 0,
  319.   "TITULAIRE"    VARCHAR(40),
  320.   "INDX_IBAN"    INTEGER,
  321.  PRIMARY KEY ("INDX")
  322. );
  323.  
  324. /* Table: HISTO_DISPO, Owner: SYSDBA */
  325.  
  326. CREATE TABLE "HISTO_DISPO" 
  327. (
  328.   "INDX"    INTEGER NOT NULL,
  329.   "USER"    VARCHAR(20),
  330.   "DATEMODIF"    TIMESTAMP,
  331.   "ANC_DISPO"    "QUANTITE",
  332.   "NEW_DISPO"    "QUANTITE",
  333.   "DELTA"    "QUANTITE"
  334. );
  335.  
  336. /* Table: HISTO_INVEN, Owner: SYSDBA */
  337.  
  338. CREATE TABLE "HISTO_INVEN" 
  339. (
  340.   "INDX"    INTEGER NOT NULL,
  341.   "USER"    VARCHAR(20),
  342.   "DATEMODIF"    TIMESTAMP,
  343.   "ANC_INVEN"    "QUANTITE",
  344.   "NEW_INVEN"    "QUANTITE",
  345.   "DELTA"    "QUANTITE"
  346. );
  347.  
  348. /* Table: IMAGES, Owner: SYSDBA */
  349.  
  350. CREATE TABLE "IMAGES" 
  351. (
  352.   "INDX"    INTEGER NOT NULL,
  353.   "IMAGE"    BLOB SUB_TYPE 0 SEGMENT SIZE 80,
  354.  PRIMARY KEY ("INDX")
  355. );
  356.  
  357. /* Table: LANGUES, Owner: SYSDBA */
  358.  
  359. CREATE TABLE "LANGUES" 
  360. (
  361.   "INDX"    SMALLINT NOT NULL,
  362.   "PAYS"    CHAR(4),
  363.   "NOM"    VARCHAR(15),
  364.   "DEVISE1"    CHAR(3),
  365.   "DEVISE2"    CHAR(3),
  366.   "TAUX"    DECIMAL(12, 6),
  367.  PRIMARY KEY ("INDX")
  368. );
  369.  
  370. /* Table: LIGNEMACRO, Owner: SYSDBA */
  371.  
  372. CREATE TABLE "LIGNEMACRO" 
  373. (
  374.   "INDEXMACRO"    INTEGER NOT NULL,
  375.   "NOLIGNE"    SMALLINT NOT NULL,
  376.   "INDEXARTICLE"    INTEGER,
  377.   "PRIX"    DECIMAL(14, 6),
  378.   "QUANTITE"    DECIMAL(11, 2),
  379.   "REMISE"    "POURCENT",
  380.   "TEXTE"    BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  381.  PRIMARY KEY ("INDEXMACRO", "NOLIGNE")
  382. );
  383.  
  384. /* Table: LIGNES, Owner: SYSDBA */
  385.  
  386. CREATE TABLE "LIGNES" 
  387. (
  388.   "INDEXPIECE"    INTEGER NOT NULL,
  389.   "NOLIGNE"    SMALLINT NOT NULL,
  390.   "INDEXARTICLE"    INTEGER,
  391.   "PRIX"    DECIMAL(14, 6),
  392.   "QUANTITE"    DECIMAL(11, 2),
  393.   "REMISE"    "POURCENT",
  394.   "TVA"    INTEGER,
  395.   "TPF"    SMALLINT,
  396.   "POIDS"    DECIMAL(11, 2),
  397.   "VOLUME"    DECIMAL(11, 2),
  398.   "UNITE"    "UNITES",
  399.   "LIBELLE"    BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  400.   "LIEN"    INTEGER,
  401.   "QTE_LIVRE"    DECIMAL(11, 2),
  402.   "INDX_UNITES"    SMALLINT,
  403.   "MARGE"    DECIMAL(14, 6),
  404.  PRIMARY KEY ("INDEXPIECE", "NOLIGNE")
  405. );
  406.  
  407. /* Table: LISTE, Owner: SYSDBA */
  408.  
  409. CREATE TABLE "LISTE" 
  410. (
  411.   "INDX"    INTEGER NOT NULL,
  412.   "NOCAISSE"    SMALLINT,
  413.   "INDXART"    INTEGER,
  414.   "Q1"    "QUANTITE",
  415.  PRIMARY KEY ("INDX")
  416. );
  417.  
  418. /* Table: MACROS, Owner: SYSDBA */
  419.  
  420. CREATE TABLE "MACROS" 
  421. (
  422.   "INDX"    INTEGER NOT NULL,
  423.   "NOM"    VARCHAR(30),
  424.  PRIMARY KEY ("INDX")
  425. );
  426.  
  427. /* Table: NO_SERIE, Owner: SYSDBA */
  428.  
  429. CREATE TABLE "NO_SERIE" 
  430. (
  431.   "INDEX_PIECE"    INTEGER NOT NULL,
  432.   "EAN"    VARCHAR(20)
  433. );
  434.  
  435. /* Table: PACKS, Owner: SYSDBA */
  436.  
  437. CREATE TABLE "PACKS" 
  438. (
  439.   "NOTIERS"    INTEGER NOT NULL,
  440.   "INDXPACK"    SMALLINT,
  441.   "QTEPACK"    DECIMAL(6, 2)
  442. );
  443.  
  444. /* Table: PIECES, Owner: SYSDBA */
  445.  
  446. CREATE TABLE "PIECES" 
  447. (
  448.   "INDX"    INTEGER NOT NULL,
  449.   "STATUT"    SMALLINT,
  450.   "NOPIECE"    VARCHAR(15),
  451.   "DATEPIECE"    TIMESTAMP DEFAULT 'NOW',
  452.   "TYPEPIECE"    SMALLINT,
  453.   "NOTIERS"    INTEGER,
  454.   "EXPEDITION"    SMALLINT,
  455.   "TRANSPORT"    SMALLINT,
  456.   "TVAPORT"    SMALLINT,
  457.   "PORT"    "EURO2",
  458.   "ESCOMPTE"    "EURO2",
  459.   "REDUCTION"    "EURO2",
  460.   "TOTALHT"    "EURO",
  461.   "SOLDE"    "EURO2",
  462.   "TOTALTVA"    "EURO2",
  463.   "TOTALTPF"    "EURO2",
  464.   "TOTALTTC"    "EURO2",
  465.   "ACOMPTE"    "EURO2",
  466.   "DEVISE"    SMALLINT,
  467.   "INDEXCAISSE"    SMALLINT,
  468.   "VENDEUR"    SMALLINT,
  469.   "DATEPONT"    DATE,
  470.   "Z"    SMALLINT DEFAULT 0,
  471.   "COMMENTAIRE"    BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  472.   "NETAP"     COMPUTED BY (TOTALTTC-ACOMPTE),
  473.   "TYPESTOCK"    SMALLINT DEFAULT 1,
  474.   "TEMP"    SMALLINT DEFAULT 0,
  475.   "PCREDUC"    "POURCENT"  DEFAULT 0,
  476.   "PCESCOMPTE"    "POURCENT"  DEFAULT 0,
  477.   "DATELIVRAISON"    DATE,
  478.   "LIENP"    INTEGER,
  479.   "CRITERE1"    SMALLINT,
  480.   "CRITERE2"    SMALLINT,
  481.   "REGROUPE_DANS"    INTEGER,
  482.   "REMISEHT"    "EURO",
  483.   "PCREMISE"    "EURO",
  484.   "LIVRE"    "T_BOOLEAN",
  485.   "ORG_FRACTION"    INTEGER,
  486.   "PC_FRACTION"    "POURCENT",
  487.   "CODEMAGASIN"    VARCHAR(15),
  488.   "NBR_LIGNES"    INTEGER,
  489.  PRIMARY KEY ("INDX")
  490. );
  491.  
  492. /* Table: PRIX, Owner: SYSDBA */
  493.  
  494. CREATE TABLE "PRIX" 
  495. (
  496.   "INDEXARTICLE"    INTEGER NOT NULL,
  497.   "NOLIGNE"    SMALLINT NOT NULL,
  498.   "LIBELLE"    VARCHAR(40),
  499.   "PRIX"    "EURO",
  500.  PRIMARY KEY ("INDEXARTICLE", "NOLIGNE")
  501. );
  502.  
  503. /* Table: PRIXVENTE, Owner: SYSDBA */
  504.  
  505. CREATE TABLE "PRIXVENTE" 
  506. (
  507.   "INDXART"    INTEGER NOT NULL,
  508.   "TARIF"    SMALLINT DEFAULT 1 NOT NULL,
  509.   "COEF"    "COEFF",
  510.   "PRIX"    DECIMAL(14, 6),
  511.   "DATEMODIF"    DATE,
  512.  PRIMARY KEY ("INDXART", "TARIF")
  513. );
  514.  
  515. /* Table: RAYONS, Owner: SYSDBA */
  516.  
  517. CREATE TABLE "RAYONS" 
  518. (
  519.   "PKEY"    INTEGER DEFAULT 0,
  520.   "RY1"    SMALLINT,
  521.   "RY2"    SMALLINT,
  522.   "RY3"    SMALLINT,
  523.   "NOMRAYON"    VARCHAR(30),
  524.   "TRI"    SMALLINT,
  525.   "STOCKMINI"    DECIMAL(15, 2),
  526.   "COMMISSION"    DECIMAL(5, 2),
  527.   "CPTACHAT"    VARCHAR(15),
  528.   "CPTVENTE"    VARCHAR(15),
  529.   "CPTEXPORT"    VARCHAR(15),
  530.   "DATECLOTURE"    DATE,
  531.   "CODELANGUE"    SMALLINT DEFAULT 1,
  532.   "HORS_CA"    "T_BOOLEAN",
  533.   "CPTIMPORT"    VARCHAR(15)
  534. );
  535.  
  536. /* Table: SOCIETES, Owner: SYSDBA */
  537.  
  538. CREATE TABLE "SOCIETES" 
  539. (
  540.   "INDX"    INTEGER NOT NULL,
  541.   "CODESOC"    VARCHAR(5),
  542.   "NOM"    VARCHAR(30),
  543.   "ADRESSE"    VARCHAR(26),
  544.   "ADRESSE2"    VARCHAR(26),
  545.   "LOCALITE"    VARCHAR(21),
  546.   "CODEPOSTAL"    VARCHAR(8),
  547.   "VILLE"    VARCHAR(22),
  548.   "PAYS"    SMALLINT,
  549.   "TELEPHONE"    VARCHAR(15),
  550.   "TELECOPIE"    VARCHAR(15),
  551.   "GSM"    VARCHAR(15),
  552.   "WWW"    VARCHAR(30),
  553.   "EMAIL"    VARCHAR(30),
  554.   "CONTACT"    VARCHAR(20),
  555.   "NOMBANQUE"    VARCHAR(20),
  556.   "TELBANQUE"    VARCHAR(15),
  557.   "RIBBANQUE"    VARCHAR(5),
  558.   "RIBGUICHET"    VARCHAR(5),
  559.   "RIBCOMPTE"    VARCHAR(12),
  560.   "RIBCLE"    VARCHAR(2),
  561.   "NIFCEE"    VARCHAR(14),
  562.   "APE"    VARCHAR(4),
  563.   "SIRET"    VARCHAR(18),
  564.   "DATECREATION"    DATE DEFAULT 'NOW',
  565.   "DATEMODIF"    DATE,
  566.   "CBNUM"    VARCHAR(20),
  567.   "CBVALIDE"    VARCHAR(8),
  568.   "CBPORTEUR"    VARCHAR(35),
  569.  PRIMARY KEY ("INDX")
  570. );
  571.  
  572. /* Table: SUIVI_DISPO, Owner: SYSDBA */
  573.  
  574. CREATE TABLE "SUIVI_DISPO" 
  575. (
  576.   "INDX"    INTEGER NOT NULL,
  577.   "SENS"    CHAR(1),
  578.   "QTE"    "QUANTITE",
  579.   "DATEMOUV"    TIMESTAMP,
  580.   "INDEXPIECE"    INTEGER,
  581.   "CAISSE"    SMALLINT,
  582.   "VENDEUR"    SMALLINT
  583. );
  584.  
  585. /* Table: SUIVI_INVENTAIRE, Owner: SYSDBA */
  586.  
  587. CREATE TABLE "SUIVI_INVENTAIRE" 
  588. (
  589.   "INDX"    INTEGER NOT NULL,
  590.   "SENS"    CHAR(1),
  591.   "QTE"    "QUANTITE",
  592.   "DATEMOUV"    TIMESTAMP,
  593.   "CAISSE"    SMALLINT,
  594.   "VENDEUR"    SMALLINT
  595. );
  596.  
  597. /* Table: TVA, Owner: SYSDBA */
  598.  
  599. CREATE TABLE "TVA" 
  600. (
  601.   "TAUX"    INTEGER NOT NULL,
  602.   "EST_DEFAUT"    "T_BOOLEAN",
  603.   "LISTE_RED"    "T_BOOLEAN",
  604.   "LIBELLE"    VARCHAR(40),
  605.   "CPTACHAT"    VARCHAR(15),
  606.   "CPTVENTE"    VARCHAR(15),
  607.  PRIMARY KEY ("TAUX")
  608. );
  609.  
  610. /* Table: VENDEURS, Owner: SYSDBA */
  611.  
  612. CREATE TABLE "VENDEURS" 
  613. (
  614.   "INDX"    INTEGER NOT NULL,
  615.   "NOM"    VARCHAR(40) NOT NULL,
  616.   "MOTDEPASSE"    VARCHAR(20),
  617.   "DROITS"    CHAR(30),
  618.   "CODELANGUE"    SMALLINT DEFAULT 1,
  619.  PRIMARY KEY ("INDX")
  620. );
  621.  
  622. /* Table: VERSEMENTS, Owner: SYSDBA */
  623.  
  624. CREATE TABLE "VERSEMENTS" 
  625. (
  626.   "INDEXPIECE"    INTEGER NOT NULL,
  627.   "NOLIGNE"    SMALLINT NOT NULL,
  628.   "TYPEV"    SMALLINT,
  629.   "DATEV"    TIMESTAMP,
  630.   "MONTANT"    "EURO",
  631.   "DEVISE"    SMALLINT,
  632.   "NUMCAISSE"    SMALLINT,
  633.   "Z"    SMALLINT DEFAULT 0,
  634.  PRIMARY KEY ("INDEXPIECE", "NOLIGNE")
  635. );
  636.  
  637. /*  Index definitions for all user tables */
  638.  
  639. CREATE INDEX "IDX_RAYON" ON "ARTICLES"("RAYON");
  640. CREATE INDEX "INDXLIEN" ON "LIGNES"("LIEN");
  641. CREATE INDEX "INDXDP" ON "PIECES"("DATEPIECE");
  642. CREATE INDEX "INDXNOT" ON "PIECES"("NOTIERS");
  643. CREATE INDEX "INDX_LIENP" ON "PIECES"("LIENP");
  644. CREATE INDEX "INDX_REGROUPE" ON "PIECES"("REGROUPE_DANS");
  645. ALTER TABLE "ARTFOUR" ADD CONSTRAINT "CT3" FOREIGN KEY ("INDXART") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  646. ALTER TABLE "ARTFOUR" ADD CONSTRAINT "CT4" FOREIGN KEY ("CODEFOUR") REFERENCES "FOURNISSEURS" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  647. ALTER TABLE "BUNDLE" ADD CONSTRAINT "CT_BUNDLE1" FOREIGN KEY ("INDX_1") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  648. ALTER TABLE "BUNDLE" ADD CONSTRAINT "CT_BUNDLE2" FOREIGN KEY ("INDX_2") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  649. ALTER TABLE "DESIGNATIONS" ADD CONSTRAINT "CT_DESI" FOREIGN KEY ("INDXART") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  650. ALTER TABLE "DESIGNATIONS" ADD CONSTRAINT "CT_DESI2" FOREIGN KEY ("CODELANGUE") REFERENCES "LANGUES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  651. ALTER TABLE "ECHEANCES" ADD CONSTRAINT "CT_ECHEANCES" FOREIGN KEY ("INDEXPIECE") REFERENCES "PIECES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  652. ALTER TABLE "HISTO_DISPO" ADD CONSTRAINT "CT8" FOREIGN KEY ("INDX") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  653. ALTER TABLE "HISTO_INVEN" ADD CONSTRAINT "CT9" FOREIGN KEY ("INDX") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  654. ALTER TABLE "IMAGES" ADD CONSTRAINT "CT_IMAGES" FOREIGN KEY ("INDX") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  655. ALTER TABLE "LIGNEMACRO" ADD CONSTRAINT "CT5" FOREIGN KEY ("INDEXMACRO") REFERENCES "MACROS" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  656. ALTER TABLE "LIGNES" ADD CONSTRAINT "CT1" FOREIGN KEY ("INDEXPIECE") REFERENCES "PIECES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  657. ALTER TABLE "NO_SERIE" ADD CONSTRAINT "CT_NOSERIE1" FOREIGN KEY ("INDEX_PIECE") REFERENCES "PIECES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  658. ALTER TABLE "PRIX" ADD CONSTRAINT "CT_PRIX1" FOREIGN KEY ("INDEXARTICLE") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  659. ALTER TABLE "PRIXVENTE" ADD CONSTRAINT "CON_PRIXVENTE" FOREIGN KEY ("INDXART") REFERENCES "ARTICLES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  660. ALTER TABLE "VERSEMENTS" ADD CONSTRAINT "CT2" FOREIGN KEY ("INDEXPIECE") REFERENCES "PIECES" ("INDX") ON UPDATE CASCADE ON DELETE CASCADE;
  661.  
  662. CREATE GENERATOR "GENINDEX";
  663. CREATE GENERATOR "GENPC0";
  664. CREATE GENERATOR "GENPC1";
  665. CREATE GENERATOR "GENPC10";
  666. CREATE GENERATOR "GENPC11";
  667. CREATE GENERATOR "GENPC12";
  668. CREATE GENERATOR "GENPC13";
  669. CREATE GENERATOR "GENPC14";
  670. CREATE GENERATOR "GENPC15";
  671. CREATE GENERATOR "GENPC16";
  672. CREATE GENERATOR "GENPC17";
  673. CREATE GENERATOR "GENPC18";
  674. CREATE GENERATOR "GENPC19";
  675. CREATE GENERATOR "GENPC2";
  676. CREATE GENERATOR "GENPC20";
  677. CREATE GENERATOR "GENPC21";
  678. CREATE GENERATOR "GENPC22";
  679. CREATE GENERATOR "GENPC3";
  680. CREATE GENERATOR "GENPC4";
  681. CREATE GENERATOR "GENPC5";
  682. CREATE GENERATOR "GENPC6";
  683. CREATE GENERATOR "GENPC7";
  684. CREATE GENERATOR "GENPC8";
  685. CREATE GENERATOR "GENPC9";
  686. CREATE GENERATOR "GENPK_ADRESSE";
  687. CREATE GENERATOR "GENPK_ART";
  688. CREATE GENERATOR "GENPK_ARTFOUR";
  689. CREATE GENERATOR "GENPK_BLOBS";
  690. CREATE GENERATOR "GENPK_CAISSES";
  691. CREATE GENERATOR "GENPK_CLIENT";
  692. CREATE GENERATOR "GENPK_ECHEANCES";
  693. CREATE GENERATOR "GENPK_ETATS";
  694. CREATE GENERATOR "GENPK_FOUR";
  695. CREATE GENERATOR "GENPK_LANGUES";
  696. CREATE GENERATOR "GENPK_LISTE";
  697. CREATE GENERATOR "GENPK_MACRO";
  698. CREATE GENERATOR "GENPK_PI";
  699. CREATE GENERATOR "GENPK_SOCIETE";
  700. CREATE GENERATOR "GENPK_USER";
  701. CREATE GENERATOR "GEN_LIEN";
  702. CREATE GENERATOR "VERSION_BASE";
  703.  
  704. /* View: PIECES1, Owner: SYSDBA */
  705.  
  706. CREATE VIEW "PIECES1" (
  707.   "INDX", 
  708.   "DATEP"
  709. ) AS
  710.  SELECT INDX,CAST (DATEPIECE AS date) FROM PIECES WHERE Z=1
  711. ;
  712.  
  713. /* View: QTE_ENCOMMANDE, Owner: SYSDBA */
  714.  
  715. CREATE VIEW "QTE_ENCOMMANDE" (
  716.   "INDEXARTICLE", 
  717.   "QTE"
  718. ) AS
  719.  
  720.  
  721.  
  722. SELECT INDEXARTICLE,SUM(QUANTITE) FROM PIECES
  723. LEFT JOIN LIGNES L ON L.INDEXPIECE=INDX
  724. WHERE TYPEPIECE=13 AND STATUT=0 AND INDEXARTICLE<>0 AND QUANTITE<>0
  725. GROUP BY INDEXARTICLE
  726. ;
  727.  
  728. /* View: QTE_ENPRECOMMANDE, Owner: SYSDBA */
  729.  
  730. CREATE VIEW "QTE_ENPRECOMMANDE" (
  731.   "INDEXARTICLE", 
  732.   "QTE"
  733. ) AS
  734.  
  735.  
  736.  
  737. SELECT INDEXARTICLE,SUM(QUANTITE) FROM PIECES
  738. LEFT JOIN LIGNES L ON L.INDEXPIECE=INDX
  739. WHERE TYPEPIECE=13 AND STATUT=2 AND INDEXARTICLE<>0 AND QUANTITE<>0
  740. GROUP BY INDEXARTICLE
  741. ;
  742.  
  743. /* View: LIGNES1, Owner: SYSDBA */
  744.  
  745. CREATE VIEW "LIGNES1" (
  746.   "DATEPIECE", 
  747.   "INDEXPIECE", 
  748.   "NOLIGNE", 
  749.   "INDEXARTICLE", 
  750.   "QUANTITE", 
  751.   "RAYON", 
  752.   "TOTALTTC"
  753. ) AS
  754.  
  755.  
  756.  
  757. select CAST(DATEPIECE AS DATE),
  758. l.INDEXPIECE,l.NOLIGNE,l.INDEXARTICLE,L.QUANTITE,
  759. A.RAYON*10000+A.FAMILLE*100+A.SSFAMILLE,
  760. CAST(l.PRIX*l.QUANTITE*(10000+TVA-((REMISE+PCREDUC+PCESCOMPTE)*100))/10000 AS DECIMAL(12,2))
  761. from pieces P
  762. JOIN LIGNES L ON L.INDEXPIECE=P.INDX
  763. JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  764. WHERE Z=1 AND (PRIX*QUANTITE)<>0
  765. ;
  766.  
  767. /* View: LIGNES2, Owner: SYSDBA */
  768.  
  769. CREATE VIEW "LIGNES2" (
  770.   "DATEPIECE", 
  771.   "INDEXPIECE", 
  772.   "NOLIGNE", 
  773.   "INDEXARTICLE", 
  774.   "QTE", 
  775.   "PKEYRAYON", 
  776.   "TOTALTTC", 
  777.   "DPAUHT", 
  778.   "PMPA", 
  779.   "MOIS", 
  780.   "ANNEE"
  781. ) AS
  782.  
  783.  
  784.  
  785.  
  786.  
  787. select CAST(DATEPIECE AS DATE),
  788. l.INDEXPIECE,l.NOLIGNE,l.INDEXARTICLE,QUANTITE,
  789. A.RAYON*10000+A.FAMILLE*100+A.SSFAMILLE,
  790. CAST(l.PRIX*l.QUANTITE*(10000+TVA-((REMISE+PCREDUC+PCESCOMPTE)*100))/10000 AS DECIMAL(12,2)),
  791. A.DPAUHT,A.PMPA,
  792. CAST(SUBSTR(DATEPIECE,6,7) AS SMALLINT),
  793. CAST(SUBSTR(DATEPIECE,1,4) AS SMALLINT)
  794. from pieces P
  795. JOIN LIGNES L ON L.INDEXPIECE=P.INDX AND (PRIX*QUANTITE)<>0
  796. JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  797. WHERE Z=1
  798. ;
  799. COMMIT WORK;
  800. SET AUTODDL OFF;
  801.  
  802. /* Stored procedures */
  803.  
  804. CREATE PROCEDURE "ALL_LIVRE" 
  805. AS
  806. BEGIN EXIT; END ;
  807.  
  808. CREATE PROCEDURE "ALL_VERROU" 
  809. (
  810.   "LIVRE" SMALLINT,
  811.   "REGROUPE" SMALLINT,
  812.   "PAYE" SMALLINT
  813. )
  814. AS
  815. BEGIN EXIT; END ;
  816.  
  817. CREATE PROCEDURE "CALCUL_REMISE" 
  818. (
  819.   "CA" DECIMAL(14, 2)
  820. )
  821. RETURNS
  822. (
  823.   "REMISE" DECIMAL(5, 2)
  824. )
  825. AS
  826. BEGIN EXIT; END ;
  827.  
  828. CREATE PROCEDURE "CHECK_GENPK" 
  829. RETURNS
  830. (
  831.   "INFO" VARCHAR(75)
  832. )
  833. AS
  834. BEGIN EXIT; END ;
  835.  
  836. CREATE PROCEDURE "DO_PURGE" 
  837. AS
  838. BEGIN EXIT; END ;
  839.  
  840. CREATE PROCEDURE "ECLATE_RAYON" 
  841. (
  842.   "INDX" INTEGER
  843. )
  844. RETURNS
  845. (
  846.   "R1" VARCHAR(40),
  847.   "R2" VARCHAR(40),
  848.   "R3" VARCHAR(40)
  849. )
  850. AS
  851. BEGIN EXIT; END ;
  852.  
  853. CREATE PROCEDURE "GETNUM" 
  854. (
  855.   "INVALUE" SMALLINT,
  856.   "DELTA" SMALLINT
  857. )
  858. RETURNS
  859. (
  860.   "AVALUE" INTEGER
  861. )
  862. AS
  863. BEGIN EXIT; END ;
  864.  
  865. CREATE PROCEDURE "GET_CA_CLIENT" 
  866. (
  867.   "INDEX_CLIENT" INTEGER,
  868.   "DATEDEB" DATE,
  869.   "DATEFIN" DATE
  870. )
  871. RETURNS
  872. (
  873.   "CA" DECIMAL(14, 2),
  874.   "CA_TOTAL" DECIMAL(14, 2)
  875. )
  876. AS
  877. BEGIN EXIT; END ;
  878.  
  879. CREATE PROCEDURE "GET_DESIGNATION" 
  880. (
  881.   "INDX" INTEGER,
  882.   "CODELANGUE" SMALLINT
  883. )
  884. RETURNS
  885. (
  886.   "TEXTE" VARCHAR(60),
  887.   "RCODE" SMALLINT
  888. )
  889. AS
  890. BEGIN EXIT; END ;
  891.  
  892. CREATE PROCEDURE "GET_ENTETE_PIECE" 
  893. (
  894.   "INVALUE" INTEGER
  895. )
  896. RETURNS
  897. (
  898.   "AVALUE" VARCHAR(55)
  899. )
  900. AS
  901. BEGIN EXIT; END ;
  902.  
  903. CREATE PROCEDURE "GET_FAMILLE_LIBRE" 
  904. (
  905.   "RY1" SMALLINT
  906. )
  907. RETURNS
  908. (
  909.   "RY2" SMALLINT
  910. )
  911. AS
  912. BEGIN EXIT; END ;
  913.  
  914. CREATE PROCEDURE "GET_LAST_DPA" 
  915. (
  916.   "INDX" INTEGER
  917. )
  918. RETURNS
  919. (
  920.   "DPA" DECIMAL(12, 2)
  921. )
  922. AS
  923. BEGIN EXIT; END ;
  924.  
  925. CREATE PROCEDURE "GET_MARGE_LIGNE" 
  926. (
  927.   "INDEX_PIECE" INTEGER,
  928.   "NO_LIGNE" SMALLINT
  929. )
  930. RETURNS
  931. (
  932.   "MARGE" DECIMAL(14, 6)
  933. )
  934. AS
  935. BEGIN EXIT; END ;
  936.  
  937. CREATE PROCEDURE "GET_MARGE_PIECE" 
  938. (
  939.   "INDEX_PIECE" INTEGER
  940. )
  941. RETURNS
  942. (
  943.   "MARGE" DECIMAL(14, 6)
  944. )
  945. AS
  946. BEGIN EXIT; END ;
  947.  
  948. CREATE PROCEDURE "GET_NBR_LIGNES" 
  949. (
  950.   "INVALUE" INTEGER
  951. )
  952. RETURNS
  953. (
  954.   "AVALUE" INTEGER
  955. )
  956. AS
  957. BEGIN EXIT; END ;
  958.  
  959. CREATE PROCEDURE "GET_NOM" 
  960. (
  961.   "N1" SMALLINT,
  962.   "N2" INTEGER
  963. )
  964. RETURNS
  965. (
  966.   "AVALUE" VARCHAR(35)
  967. )
  968. AS
  969. BEGIN EXIT; END ;
  970.  
  971. CREATE PROCEDURE "GET_NOM_CLIENT" 
  972. (
  973.   "INVALUE" INTEGER
  974. )
  975. RETURNS
  976. (
  977.   "AVALUE" VARCHAR(85)
  978. )
  979. AS
  980. BEGIN EXIT; END ;
  981.  
  982. CREATE PROCEDURE "GET_NOM_FOUR" 
  983. (
  984.   "INVALUE" INTEGER
  985. )
  986. RETURNS
  987. (
  988.   "AVALUE" VARCHAR(85)
  989. )
  990. AS
  991. BEGIN EXIT; END ;
  992.  
  993. CREATE PROCEDURE "GET_NOM_RAYON" 
  994. (
  995.   "INDX" INTEGER
  996. )
  997. RETURNS
  998. (
  999.   "R1" VARCHAR(40),
  1000.   "R2" VARCHAR(40),
  1001.   "R3" VARCHAR(40)
  1002. )
  1003. AS
  1004. BEGIN EXIT; END ;
  1005.  
  1006. CREATE PROCEDURE "GET_NOM_TIERS" 
  1007. (
  1008.   "N1" SMALLINT,
  1009.   "N2" INTEGER
  1010. )
  1011. RETURNS
  1012. (
  1013.   "NOM_COMPLET" VARCHAR(200)
  1014. )
  1015. AS
  1016. BEGIN EXIT; END ;
  1017.  
  1018. CREATE PROCEDURE "GET_PMPA" 
  1019. (
  1020.   "INDX" INTEGER
  1021. )
  1022. RETURNS
  1023. (
  1024.   "PMPA" DECIMAL(12, 2)
  1025. )
  1026. AS
  1027. BEGIN EXIT; END ;
  1028.  
  1029. CREATE PROCEDURE "GET_PURGE" 
  1030. (
  1031.   "TYPEPURGE" SMALLINT,
  1032.   "RCH_TEMP" SMALLINT
  1033. )
  1034. RETURNS
  1035. (
  1036.   "INDXOUT" INTEGER,
  1037.   "DESI" VARCHAR(60)
  1038. )
  1039. AS
  1040. BEGIN EXIT; END ;
  1041.  
  1042. CREATE PROCEDURE "GET_R123" 
  1043. (
  1044.   "INDX" INTEGER
  1045. )
  1046. RETURNS
  1047. (
  1048.   "R1" VARCHAR(40),
  1049.   "R2" VARCHAR(40),
  1050.   "R3" VARCHAR(40)
  1051. )
  1052. AS
  1053. BEGIN EXIT; END ;
  1054.  
  1055. CREATE PROCEDURE "GET_RAYON_LIBRE" 
  1056. RETURNS
  1057. (
  1058.   "RY" SMALLINT
  1059. )
  1060. AS
  1061. BEGIN EXIT; END ;
  1062.  
  1063. CREATE PROCEDURE "GET_REMISE_CLIENTS" 
  1064. (
  1065.   "DATEDEB" DATE,
  1066.   "DATEFIN" DATE
  1067. )
  1068. RETURNS
  1069. (
  1070.   "INDEX_CLIENT" INTEGER,
  1071.   "CA" DECIMAL(14, 2),
  1072.   "REMISE" DECIMAL(5, 2),
  1073.   "CA_TOTAL" DECIMAL(14, 2)
  1074. )
  1075. AS
  1076. BEGIN EXIT; END ;
  1077.  
  1078. CREATE PROCEDURE "GET_SFAMILLE_LIBRE" 
  1079. (
  1080.   "RY1" SMALLINT,
  1081.   "RY2" SMALLINT
  1082. )
  1083. RETURNS
  1084. (
  1085.   "RY3" SMALLINT
  1086. )
  1087. AS
  1088. BEGIN EXIT; END ;
  1089.  
  1090. CREATE PROCEDURE "GET_TITREPC" 
  1091. (
  1092.   "INVALUE" INTEGER
  1093. )
  1094. RETURNS
  1095. (
  1096.   "AVALUE" VARCHAR(20)
  1097. )
  1098. AS
  1099. BEGIN EXIT; END ;
  1100.  
  1101. CREATE PROCEDURE "INTERROGATION_PONTA" 
  1102. AS
  1103. BEGIN EXIT; END ;
  1104.  
  1105. CREATE PROCEDURE "INTERROGATION_PONTV" 
  1106. AS
  1107. BEGIN EXIT; END ;
  1108.  
  1109. CREATE PROCEDURE "IV_ADD" 
  1110. (
  1111.   "NOCAISSE" SMALLINT
  1112. )
  1113. AS
  1114. BEGIN EXIT; END ;
  1115.  
  1116. CREATE PROCEDURE "MAJ_AVOIR" 
  1117. (
  1118.   "INDEX_CLIENT" INTEGER
  1119. )
  1120. RETURNS
  1121. (
  1122.   "N_AVOIR" DECIMAL(14, 2)
  1123. )
  1124. AS
  1125. BEGIN EXIT; END ;
  1126.  
  1127. CREATE PROCEDURE "MAJ_PURGE" 
  1128. (
  1129.   "INDEXP" INTEGER
  1130. )
  1131. AS
  1132. BEGIN EXIT; END ;
  1133.  
  1134. CREATE PROCEDURE "MAJ_STOCK_ARTICLE" 
  1135. (
  1136.   "INDEXA" INTEGER,
  1137.   "Q" DECIMAL(11, 2),
  1138.   "TYPEMVT" SMALLINT
  1139. )
  1140. AS
  1141. BEGIN EXIT; END ;
  1142.  
  1143. CREATE PROCEDURE "MAJ_STOCK_PIECE" 
  1144. (
  1145.   "INDEXP" INTEGER,
  1146.   "DELTA" SMALLINT
  1147. )
  1148. AS
  1149. BEGIN EXIT; END ;
  1150.  
  1151. CREATE PROCEDURE "RAZ_PURGE" 
  1152. AS
  1153. BEGIN EXIT; END ;
  1154.  
  1155. CREATE PROCEDURE "SET_LIVRE" 
  1156. (
  1157.   "INDXPIECE" INTEGER
  1158. )
  1159. AS
  1160. BEGIN EXIT; END ;
  1161.  
  1162. CREATE PROCEDURE "SET_NBR_LIGNES" 
  1163. (
  1164.   "INDXPIECE" INTEGER,
  1165.   "DELP" SMALLINT
  1166. )
  1167. AS
  1168. BEGIN EXIT; END ;
  1169.  
  1170. CREATE PROCEDURE "SET_VERROU" 
  1171. (
  1172.   "INDXPIECE" INTEGER,
  1173.   "PLIVRE" SMALLINT,
  1174.   "REGROUPE" SMALLINT,
  1175.   "PAYE" SMALLINT
  1176. )
  1177. AS
  1178. BEGIN EXIT; END ;
  1179.  
  1180. CREATE PROCEDURE "UPDATE_REMISE_CLIENTS" 
  1181. (
  1182.   "DATEDEB" DATE,
  1183.   "DATEFIN" DATE
  1184. )
  1185. AS
  1186. BEGIN EXIT; END ;
  1187.  
  1188. CREATE PROCEDURE "VALEUR_STOCK" 
  1189. RETURNS
  1190. (
  1191.   "S_INDEX" INTEGER,
  1192.   "S_RAYON" SMALLINT,
  1193.   "S_DISPO" DECIMAL(12, 2),
  1194.   "S_INVENTAIRE" DECIMAL(12, 2)
  1195. )
  1196. AS
  1197. BEGIN EXIT; END ;
  1198.  
  1199.  
  1200. ALTER PROCEDURE "ALL_LIVRE" 
  1201. AS
  1202. DECLARE VARIABLE V1 INTEGER;
  1203. BEGIN
  1204. FOR SELECT INDX FROM PIECES INTO :v1 DO EXECUTE PROCEDURE SET_LIVRE(:v1);
  1205. END
  1206.  ;
  1207.  
  1208.  
  1209. ALTER PROCEDURE "ALL_VERROU" 
  1210. (
  1211.   "LIVRE" SMALLINT,
  1212.   "REGROUPE" SMALLINT,
  1213.   "PAYE" SMALLINT
  1214. )
  1215. AS
  1216. DECLARE VARIABLE N INTEGER;
  1217. BEGIN
  1218. FOR SELECT INDX FROM PIECES INTO :N DO EXECUTE PROCEDURE SET_VERROU(:N,:LIVRE,:REGROUPE,:PAYE);
  1219. EXIT;
  1220. end
  1221.  ;
  1222.  
  1223.  
  1224. ALTER PROCEDURE "CALCUL_REMISE" 
  1225. (
  1226.   "CA" DECIMAL(14, 2)
  1227. )
  1228. RETURNS
  1229. (
  1230.   "REMISE" DECIMAL(5, 2)
  1231. )
  1232. AS
  1233. BEGIN
  1234. IF ((CA IS NULL) OR (CA<100)) THEN REMISE=0;
  1235. ELSE IF (CA<200) THEN REMISE=2;
  1236. ELSE IF (CA<500) THEN REMISE=10;
  1237. ELSE IF (CA<1000) THEN REMISE=15;
  1238. ELSE REMISE=20;
  1239. SUSPEND;
  1240. END
  1241.  ;
  1242.  
  1243.  
  1244. ALTER PROCEDURE "CHECK_GENPK" 
  1245. RETURNS
  1246. (
  1247.   "INFO" VARCHAR(75)
  1248. )
  1249. AS
  1250. DECLARE VARIABLE N1 INTEGER;
  1251. DECLARE VARIABLE N2 INTEGER;
  1252. begin
  1253. /* GENPK_ADRESSE */
  1254. N1 = gen_id(genpk_ADRESSE,0);
  1255. SELECT MAX(INDX) FROM ADRESSES INTO :n2;
  1256. if (n2 IS NULL) then n2=0;
  1257. if (n1<>n2) then
  1258.   begin
  1259.   info = 'Index de la table ADRESSES rΘajustΘ de ' || n1 || ' α ' || n2;
  1260.   n1 = gen_id(genpk_ADRESSE, n2-n1);
  1261.   suspend;
  1262.   end
  1263.  
  1264. /* GENPK_ART */
  1265. N1 = gen_id(genpk_ART,0);
  1266. SELECT MAX(INDX) FROM ARTICLES INTO :N2;
  1267. if (n2 IS NULL) then n2=0;
  1268. if (n1<>n2) then
  1269.   begin
  1270.   info = 'Index de la table ARTICLES rΘajustΘ de ' || n1 || ' α ' || n2;
  1271.   n1 = gen_id(genpk_ART, n2-n1);
  1272.   suspend;
  1273.   end
  1274.  
  1275. /* GENPK_ARTFOUR */
  1276. N1 = gen_id(genpk_ARTFOUR,0);
  1277. SELECT MAX(INDEXAF) FROM ARTFOUR INTO :N2;
  1278. if (n2 IS NULL) then n2=0;
  1279. if (n1<>n2) then
  1280.   begin
  1281.   info = 'Index de la table ARTFOUR rΘajustΘ de ' || n1 || ' α ' || n2;
  1282.   n1 = gen_id(genpk_ARTFOUR, n2-n1);
  1283.   suspend;
  1284.   end
  1285.  
  1286. /* GENPK_BLOBS */
  1287. N1 = gen_id(genpk_blobs,0);
  1288. SELECT MAX(INDX) FROM blobs INTO :N2;
  1289. if (n2 IS NULL) then n2=0;
  1290. if (n1<>n2 AND n1>5) then
  1291.   begin
  1292.   info = 'Index de la table BLOBS rΘajustΘ de ' || n1 || ' α ' || n2;
  1293.   suspend;
  1294.   n1 = gen_id(genpk_blobs, n2-n1);
  1295.   end
  1296.  
  1297. /* GENPK_CAISSES */
  1298. N1 = gen_id(genpk_CAISSES,0);
  1299. SELECT MAX(INDX) FROM CAISSES INTO :N2;
  1300. if (n2 IS NULL) then n2=0;
  1301. if (n1<>n2) then
  1302.   begin
  1303.   info = 'Index de la table CAISSES rΘajustΘ de ' || n1 || ' α ' || n2;
  1304.   n1 = gen_id(genpk_CAISSES, n2-n1);
  1305.   suspend;
  1306.   end
  1307.  
  1308. /* GENPK_CLIENT */
  1309. N1 = gen_id(genpk_CLIENT,0);
  1310. SELECT MAX(INDX) FROM CLIENTS INTO :N2;
  1311. if (n2 IS NULL) then n2=0;
  1312. if (n1<>n2) then
  1313.   begin
  1314.   info = 'Index de la table CLIENTS rΘajustΘ de ' || n1 || ' α ' || n2;
  1315.   n1 = gen_id(genpk_CLIENT, n2-n1);
  1316.   suspend;
  1317.   end
  1318.  
  1319. /* GENPK_ECHEANCES */
  1320. N1 = gen_id(genpk_ECHEANCES,0);
  1321. SELECT MAX(NUM) FROM ECHEANCES INTO :N2;
  1322. if (n2 IS NULL) then n2=0;
  1323. if (n1<>n2) then
  1324.   begin
  1325.   info = 'Index de la table ECHEANCES rΘajustΘ de ' || n1 || ' α ' || n2;
  1326.   n1 = gen_id(genpk_ECHEANCES, n2-n1);
  1327.   suspend;
  1328.   end
  1329.  
  1330. /* GENPK_ETATS */
  1331. N1 = gen_id(genpk_etats,0);
  1332. SELECT MAX(INDX) FROM etats INTO :N2;
  1333. if (n2 IS NULL) then n2=0;
  1334. if (n1<>n2) then
  1335.   begin
  1336.   info = 'Index de la table ETATS rΘajustΘ de ' || n1 || ' α ' || n2;
  1337.   n1 = gen_id(genpk_etats, n2-n1);
  1338.   suspend;
  1339.   end
  1340.  
  1341. /* GENPK_FOUR */
  1342. N1 = gen_id(genpk_FOUR,0);
  1343. SELECT MAX(INDX) FROM FOURNISSEURS INTO :N2;
  1344. if (n2 IS NULL) then n2=0;
  1345. if (n1<>n2) then
  1346.   begin
  1347.   info = 'Index de la table FOURNISSEURS rΘajustΘ de ' || n1 || ' α ' || n2;
  1348.   n1 = gen_id(genpk_FOUR, n2-n1);
  1349.   suspend;
  1350.   end
  1351.  
  1352. /* GENPK_LANGUES */
  1353. N1 = gen_id(genpk_LANGUES,0);
  1354. SELECT MAX(INDX) FROM LANGUES INTO :N2;
  1355. if (n2 IS NULL) then n2=0;
  1356. if (n1<>n2) then
  1357.   begin
  1358.   info = 'Index de la table LANGUES rΘajustΘ de ' || n1 || ' α ' || n2;
  1359.   n1 = gen_id(genpk_LANGUES, n2-n1);
  1360.   suspend;
  1361.   end
  1362.  
  1363. /* GENPK_MACRO */
  1364. N1 = gen_id(genpk_MACRO,0);
  1365. SELECT MAX(INDX) FROM MACROS INTO :N2;
  1366. if (n2 IS NULL) then n2=0;
  1367. if (n1<>n2) then
  1368.   begin
  1369.   info = 'Index de la table MACROS rΘajustΘ de ' || n1 || ' α ' || n2;
  1370.   n1 = gen_id(genpk_MACRO, n2-n1);
  1371.   suspend;
  1372.   end
  1373.  
  1374. /* GENPK_PI */
  1375. N1 = gen_id(genpk_PI,0);
  1376. SELECT MAX(INDX) FROM PIECES INTO :N2;
  1377. if (n2 IS NULL) then n2=0;
  1378. if (n1<>n2) then
  1379.   begin
  1380.   info = 'Index de la table PIECES rΘajustΘ de ' || n1 || ' α ' || n2;
  1381.   n1 = gen_id(genpk_PI, n2-n1);
  1382.   suspend;
  1383.   end
  1384.  
  1385. /* GENPK_SOCIETE */
  1386. N1 = gen_id(genpk_SOCIETE,0);
  1387. SELECT MAX(INDX) FROM SOCIETES INTO :N2;
  1388. if (n2 IS NULL) then n2=0;
  1389. if (n1<>n2) then
  1390.   begin
  1391.   info = 'Index de la table SOCIETES rΘajustΘ de ' || n1 || ' α ' || n2;
  1392.   n1 = gen_id(genpk_SOCIETE, n2-n1);
  1393.   suspend;
  1394.   end
  1395.  
  1396. /* GENPK_USER */
  1397. N1 = gen_id(genpk_USER,0);
  1398. SELECT MAX(INDX) FROM VENDEURS INTO :N2;
  1399. if (n2 IS NULL) then n2=0;
  1400. if (n1<>n2) then
  1401.   begin
  1402.   info = 'Index de la table VENDEURS rΘajustΘ de ' || n1 || ' α ' || n2;
  1403.   n1 = gen_id(genpk_USER, n2-n1);
  1404.   suspend;
  1405.   end
  1406.  
  1407. /* GENPK_LIEN */
  1408. N1 = gen_id(gen_LIEN,0);
  1409. SELECT MAX(LIEN) FROM LIGNES INTO :N2;
  1410. if (n2 IS NULL) then n2=0;
  1411. if (n1<>n2) then
  1412.   begin
  1413.   info = 'Index des liens de la table LIGNES rΘajustΘ de ' || n1 || ' α ' || n2;
  1414.   n1 = gen_id(gen_LIEN, n2-n1);
  1415.   suspend;
  1416.   end
  1417. end
  1418.  ;
  1419.  
  1420.  
  1421. ALTER PROCEDURE "DO_PURGE" 
  1422. AS
  1423. BEGIN
  1424. DELETE FROM CLIENTS WHERE TEMP=0;
  1425. DELETE FROM FOURNISSEURS WHERE TEMP=0;
  1426. DELETE FROM ARTICLES WHERE TEMP=0;
  1427. DELETE FROM PIECES WHERE TEMP=0;
  1428. END
  1429.  ;
  1430.  
  1431.  
  1432. ALTER PROCEDURE "ECLATE_RAYON" 
  1433. (
  1434.   "INDX" INTEGER
  1435. )
  1436. RETURNS
  1437. (
  1438.   "R1" VARCHAR(40),
  1439.   "R2" VARCHAR(40),
  1440.   "R3" VARCHAR(40)
  1441. )
  1442. AS
  1443. DECLARE VARIABLE V1 VARCHAR(50);
  1444. DECLARE VARIABLE N1 SMALLINT;
  1445. DECLARE VARIABLE N2 SMALLINT;
  1446. DECLARE VARIABLE N3 SMALLINT;
  1447. BEGIN
  1448. SELECT RY1,RY2,RY3 FROM RAYONS WHERE PKEY = :INDX INTO :N1,:N2,:N3;
  1449. SELECT NOMRAYON FROM RAYONS WHERE (RY1=:N1) AND (RY2=0) AND (RY3=0) INTO :R1;
  1450. if (n2<>0) then SELECT NOMRAYON FROM RAYONS WHERE (RY1=:N1) AND (RY2=:N2) AND (RY3=0) INTO :R2;
  1451. if (n3<>0) then SELECT NOMRAYON FROM RAYONS WHERE (RY1=:N1) AND (RY2=:N2) AND (RY3=:N3) INTO :R3;
  1452. SUSPEND;
  1453. END
  1454.  ;
  1455.  
  1456.  
  1457. ALTER PROCEDURE "GETNUM" 
  1458. (
  1459.   "INVALUE" SMALLINT,
  1460.   "DELTA" SMALLINT
  1461. )
  1462. RETURNS
  1463. (
  1464.   "AVALUE" INTEGER
  1465. )
  1466. AS
  1467. BEGIN
  1468. IF (INVALUE = 0) then
  1469.   begin
  1470.   AVALUE = GEN_ID(GENPC0,DELTA);
  1471.   end
  1472. ELSE if (INVALUE = 1) then
  1473.   begin
  1474.  AVALUE = GEN_ID(GENPC1,DELTA);
  1475.   end
  1476. ELSE if (INVALUE = 2) then
  1477.   begin
  1478.  AVALUE = GEN_ID(GENPC2,DELTA);
  1479.   end
  1480. ELSE if (INVALUE = 3) then
  1481.   begin
  1482.  AVALUE = GEN_ID(GENPC3,DELTA);
  1483.   end
  1484. ELSE if (INVALUE = 4) then
  1485.   begin
  1486.  AVALUE = GEN_ID(GENPC4,DELTA);
  1487.   end
  1488. ELSE if (INVALUE = 5) then
  1489.   begin
  1490.  AVALUE = GEN_ID(GENPC5,DELTA);
  1491.   end
  1492. ELSE if (INVALUE = 6) then
  1493.   begin
  1494.  AVALUE = GEN_ID(GENPC6,DELTA);
  1495.   end
  1496. ELSE if (INVALUE = 7) then
  1497.   begin
  1498.  AVALUE = GEN_ID(GENPC7,DELTA);
  1499.   end
  1500. ELSE if (INVALUE = 8) then
  1501.   begin
  1502.  AVALUE = GEN_ID(GENPC8,DELTA);
  1503.   end
  1504. ELSE if (INVALUE = 9) then
  1505.   begin
  1506.  AVALUE = GEN_ID(GENPC9,DELTA);
  1507.   end
  1508. ELSE if (INVALUE = 10) then
  1509.   begin
  1510.  AVALUE = GEN_ID(GENPC10,DELTA);
  1511.   end
  1512. ELSE if (INVALUE = 11) then
  1513.   begin
  1514.  AVALUE = GEN_ID(GENPC11,DELTA);
  1515.   end
  1516. ELSE if (INVALUE = 12) then
  1517.   begin
  1518.  AVALUE = GEN_ID(GENPC12,DELTA);
  1519.   end
  1520. ELSE if (INVALUE = 13) then
  1521.   begin
  1522.  AVALUE = GEN_ID(GENPC13,DELTA);
  1523.   end
  1524. ELSE if (INVALUE = 14) then
  1525.   begin
  1526.  AVALUE = GEN_ID(GENPC14,DELTA);
  1527.   end
  1528. ELSE if (INVALUE = 15) then
  1529.   begin
  1530.  AVALUE = GEN_ID(GENPC15,DELTA);
  1531.   end
  1532. ELSE if (INVALUE = 16) then
  1533.   begin
  1534.  AVALUE = GEN_ID(GENPC16,DELTA);
  1535.   end
  1536. ELSE if (INVALUE = 17) then
  1537.   begin
  1538.  AVALUE = GEN_ID(GENPC17,DELTA);
  1539.   end
  1540. ELSE if (INVALUE = 20) then
  1541.   begin
  1542.  AVALUE = GEN_ID(GENPC20,DELTA);
  1543.   end
  1544. ELSE if (INVALUE = 21) then
  1545.   begin
  1546.  AVALUE = GEN_ID(GENPC21,DELTA);
  1547.   end
  1548. ELSE if (INVALUE = 22) then
  1549.   begin
  1550.  AVALUE = GEN_ID(GENPC22,DELTA);
  1551.   end
  1552. ELSE if (INVALUE = 50) then
  1553.   begin
  1554.  AVALUE = GEN_ID(GENINDEX,DELTA);
  1555.   end
  1556. ELSE if (INVALUE = 100) then
  1557.   begin
  1558.  AVALUE = GEN_ID(GENPK_PI,DELTA);
  1559.   end
  1560. ELSE if (INVALUE = 101) then
  1561.   begin
  1562.  AVALUE = GEN_ID(GENPK_ETATS,DELTA);
  1563.   end
  1564. ELSE if (INVALUE = 102) then
  1565.   begin
  1566.  AVALUE = GEN_ID(GENPK_ART,DELTA);
  1567.   end
  1568. ELSE if (INVALUE = 103) then
  1569.   begin
  1570.  AVALUE = GEN_ID(GENPK_CLIENT,DELTA);
  1571.   end
  1572. ELSE if (INVALUE = 104) then
  1573.   begin
  1574.  AVALUE = GEN_ID(GENPK_FOUR,DELTA);
  1575.   end
  1576. SUSPEND; END
  1577.  ;
  1578.  
  1579.  
  1580. ALTER PROCEDURE "GET_CA_CLIENT" 
  1581. (
  1582.   "INDEX_CLIENT" INTEGER,
  1583.   "DATEDEB" DATE,
  1584.   "DATEFIN" DATE
  1585. )
  1586. RETURNS
  1587. (
  1588.   "CA" DECIMAL(14, 2),
  1589.   "CA_TOTAL" DECIMAL(14, 2)
  1590. )
  1591. AS
  1592. DECLARE VARIABLE CA1 DECIMAL(14,2);
  1593. DECLARE VARIABLE CA2 DECIMAL(14,2);
  1594. BEGIN
  1595. select SUM(TOTALTTC) FROM PIECES WHERE NOTIERS=:INDEX_CLIENT
  1596.                                    AND Z=1
  1597.                                    AND DATEPIECE>=:DATEDEB
  1598.                                    AND DATEPIECE<=:DATEFIN
  1599.                                    INTO :CA_TOTAL;
  1600. IF ((NOT CA_TOTAL IS NULL) AND (CA_TOTAL<>0)) then
  1601.   BEGIN
  1602.   /* CALCUL DES LIGNES HORS-CA */
  1603.   SELECT SUM(CAST(L.PRIX*L.QUANTITE*(10000+L.TVA-(L.REMISE*100))/10000 AS DECIMAL(12,2))) from lignes L
  1604.   join pieces p on p.indx=l.indexpiece
  1605.               AND P.NOTIERS=:INDEX_CLIENT
  1606.               AND P.Z=1
  1607.               AND P.DATEPIECE>=:DATEDEB
  1608.               AND P.DATEPIECE<=:DATEFIN
  1609.   JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  1610.   JOIN RAYONS R ON R.PKEY=A.PKEYR
  1611.   WHERE R.HORS_CA=1 OR A.HORS_CA=1
  1612.   INTO :CA1;
  1613.  
  1614.   IF (CA1 IS NULL) THEN CA = :CA_TOTAL; ELSE CA = :CA_TOTAL - :CA1;
  1615.   END
  1616. ELSE
  1617.   BEGIN
  1618.   CA = 0;
  1619.   CA_TOTAL = 0;
  1620.   END
  1621. SUSPEND;
  1622. END
  1623.  ;
  1624.  
  1625.  
  1626. ALTER PROCEDURE "GET_DESIGNATION" 
  1627. (
  1628.   "INDX" INTEGER,
  1629.   "CODELANGUE" SMALLINT
  1630. )
  1631. RETURNS
  1632. (
  1633.   "TEXTE" VARCHAR(60),
  1634.   "RCODE" SMALLINT
  1635. )
  1636. AS
  1637. DECLARE VARIABLE V1 SMALLINT;
  1638. BEGIN
  1639. RCODE = :CODELANGUE;
  1640. SELECT COUNT(*) FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=:RCODE INTO V1;
  1641. IF (V1 = 0) THEN
  1642.   BEGIN
  1643.   RCODE = 1;
  1644.   SELECT COUNT(*) FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=1 INTO V1;
  1645.   END
  1646. SELECT TEXTE FROM DESIGNATIONS D WHERE D.INDXART=:INDX AND D.CODELANGUE=:RCODE INTO :TEXTE;
  1647. SUSPEND;
  1648. END
  1649.  ;
  1650.  
  1651.  
  1652. ALTER PROCEDURE "GET_ENTETE_PIECE" 
  1653. (
  1654.   "INVALUE" INTEGER
  1655. )
  1656. RETURNS
  1657. (
  1658.   "AVALUE" VARCHAR(55)
  1659. )
  1660. AS
  1661. declare variable v1 Varchar(15);
  1662. declare variable v3 Varchar(35);
  1663. BEGIN
  1664. SELECT p.NOPIECE,c.designation
  1665. from PIECES p
  1666. LEFT JOIN CHAINES C on (c.TYPEC=0)AND (c.LIGNE=p.TYPEPIECE) AND (C.COLONNE=0)
  1667. WHERE (p.INDX=:INVALUE)
  1668. INTO v1,v3;
  1669. AVALUE=v3 || ' N░' || v1;
  1670. SUSPEND;
  1671. end
  1672.  ;
  1673.  
  1674.  
  1675. ALTER PROCEDURE "GET_FAMILLE_LIBRE" 
  1676. (
  1677.   "RY1" SMALLINT
  1678. )
  1679. RETURNS
  1680. (
  1681.   "RY2" SMALLINT
  1682. )
  1683. AS
  1684. DECLARE VARIABLE I INTEGER;
  1685. BEGIN
  1686. RY2 = 1;
  1687. WHILE (RY2<99) DO
  1688.   BEGIN
  1689.   SELECT COUNT(*) FROM RAYONS WHERE RY1=:RY1 AND RY2=:RY2 INTO I;
  1690.   IF (I>0) THEN RY2 = RY2 + 1;
  1691.   ELSE
  1692.     BEGIN
  1693.     UPDATE ARTICLES SET FAMILLE=0,SSFAMILLE=0 WHERE RAYON=:RY1 AND FAMILLE=:RY2;
  1694.     EXIT;
  1695.     END
  1696.   END
  1697. END
  1698.  ;
  1699.  
  1700.  
  1701. ALTER PROCEDURE "GET_LAST_DPA" 
  1702. (
  1703.   "INDX" INTEGER
  1704. )
  1705. RETURNS
  1706. (
  1707.   "DPA" DECIMAL(12, 2)
  1708. )
  1709. AS
  1710. BEGIN
  1711. FOR SELECT DPA FROM ARTFOUR WHERE INDXART=:INDX AND DPA>0 ORDER BY DATEACHAT INTO :DPA DO
  1712.   begin
  1713.   end
  1714. SUSPEND;
  1715. END
  1716.  ;
  1717.  
  1718.  
  1719. ALTER PROCEDURE "GET_MARGE_LIGNE" 
  1720. (
  1721.   "INDEX_PIECE" INTEGER,
  1722.   "NO_LIGNE" SMALLINT
  1723. )
  1724. RETURNS
  1725. (
  1726.   "MARGE" DECIMAL(14, 6)
  1727. )
  1728. AS
  1729. DECLARE VARIABLE INDXA INTEGER;
  1730. DECLARE VARIABLE PRIX DECIMAL(14,6);
  1731. DECLARE VARIABLE QUANTITE DECIMAL(11,2);
  1732. DECLARE VARIABLE REMISE DECIMAL(5,2);
  1733. DECLARE VARIABLE DPAU DECIMAL(14,4);
  1734. DECLARE VARIABLE PMPA DECIMAL(14,4);
  1735. DECLARE VARIABLE MARGE_L DECIMAL(14,4);
  1736. DECLARE VARIABLE MARGE_A DECIMAL(14,4);
  1737. DECLARE VARIABLE TYPE_MARGE SMALLINT;
  1738. BEGIN
  1739. SELECT L.INDEXARTICLE,L.PRIX,L.QUANTITE,L.REMISE,L.MARGE,A.DPAUHT,A.PMPA,A.TYPEMARGE,A.MARGE FROM LIGNES L
  1740. JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  1741. WHERE L.INDEXPIECE=:INDEX_PIECE AND L.NOLIGNE=:NO_LIGNE
  1742. INTO :INDXA,:PRIX,:QUANTITE,:REMISE,:MARGE_L,:DPAU,:PMPA,:TYPE_MARGE,:MARGE_A;
  1743. /* Si pas d'article, pas de calcul */
  1744. IF (MARGE_L IS NULL) THEN MARGE=0;
  1745. /*L.PRIX*L.QUANTITE*(10000+L.TVA-(L.REMISE*100))/10000*/
  1746. IF (INDXA IS NULL) THEN MARGE=0;
  1747. ELSE
  1748.   BEGIN
  1749.   IF (TYPE_MARGE=2) THEN MARGE=:MARGE_A;
  1750.   ELSE
  1751.     BEGIN
  1752.     IF (TYPE_MARGE IS NULL OR TYPE_MARGE<>1) THEN
  1753.       BEGIN
  1754.       IF (PMPA IS NULL) THEN SELECT PMPA FROM GET_PMPA(:INDXA) INTO :DPAU;
  1755.       ELSE DPAU = PMPA;
  1756.       END
  1757.     /* DPAU contient le prix d'achat . Soustraire le prix de vente */
  1758.     END
  1759.   IF ((REMISE IS NOT NULL) AND (REMISE<>0)) THEN PRIX = PRIX * (100 - REMISE) / 100;
  1760.   MARGE = (PRIX - DPAU) * QUANTITE;
  1761.   END
  1762. IF (MARGE_L IS NULL OR MARGE_L<>MARGE) THEN UPDATE LIGNES SET MARGE=:MARGE WHERE INDEXPIECE=:INDEX_PIECE AND NOLIGNE=:NO_LIGNE;
  1763. SUSPEND;
  1764. END
  1765.  ;
  1766.  
  1767.  
  1768. ALTER PROCEDURE "GET_MARGE_PIECE" 
  1769. (
  1770.   "INDEX_PIECE" INTEGER
  1771. )
  1772. RETURNS
  1773. (
  1774.   "MARGE" DECIMAL(14, 6)
  1775. )
  1776. AS
  1777. DECLARE VARIABLE NOLIGNE SMALLINT;
  1778. DECLARE VARIABLE MARGE1 DECIMAL(14,4);
  1779. BEGIN
  1780. MARGE = 0;
  1781. FOR SELECT NOLIGNE FROM LIGNES WHERE INDEXPIECE=:INDEX_PIECE INTO :NOLIGNE DO
  1782.   BEGIN
  1783.   SELECT MARGE FROM GET_MARGE_LIGNE(:INDEX_PIECE,:NOLIGNE) INTO :MARGE1;
  1784.   IF (MARGE1 IS NOT NULL) THEN MARGE = MARGE + MARGE1;
  1785.   END
  1786. SUSPEND;
  1787. END
  1788.  ;
  1789.  
  1790.  
  1791. ALTER PROCEDURE "GET_NBR_LIGNES" 
  1792. (
  1793.   "INVALUE" INTEGER
  1794. )
  1795. RETURNS
  1796. (
  1797.   "AVALUE" INTEGER
  1798. )
  1799. AS
  1800. BEGIN
  1801. SELECT COUNT(*) FROM LIGNES WHERE INDEXPIECE=:INVALUE INTO :AVALUE;
  1802. SUSPEND;
  1803. end
  1804.  ;
  1805.  
  1806.  
  1807. ALTER PROCEDURE "GET_NOM" 
  1808. (
  1809.   "N1" SMALLINT,
  1810.   "N2" INTEGER
  1811. )
  1812. RETURNS
  1813. (
  1814.   "AVALUE" VARCHAR(35)
  1815. )
  1816. AS
  1817. BEGIN
  1818. IF (n1<13) THEN SELECT UPPER(NOM) FROM CLIENTS WHERE INDX=:N2 INTO AVALUE;
  1819.            ELSE SELECT UPPER(NOM) FROM FOURNISSEURS WHERE INDX=:N2 INTO AVALUE;
  1820. SUSPEND;
  1821. END
  1822.  ;
  1823.  
  1824.  
  1825. ALTER PROCEDURE "GET_NOM_CLIENT" 
  1826. (
  1827.   "INVALUE" INTEGER
  1828. )
  1829. RETURNS
  1830. (
  1831.   "AVALUE" VARCHAR(85)
  1832. )
  1833. AS
  1834. DECLARE VARIABLE V1 VARCHAR(35);
  1835. DECLARE VARIABLE V2 VARCHAR(20);
  1836. BEGIN
  1837. SELECT C.DESIGNATION, T.PRENOM, T.NOM
  1838. FROM CLIENTS T
  1839. LEFT JOIN CHAINES C ON (C.TYPEC=7) AND (C.LIGNE=T.CIVILITE-1) AND (C.COLONNE=0)
  1840. WHERE T.INDX = :INVALUE
  1841. INTO :V1,:V2,AVALUE;
  1842. IF (:V2<>'') THEN
  1843. BEGIN
  1844. AVALUE = V2 || ' ' || AVALUE;
  1845. IF ((V1 IS NOT NULL) AND (V2 NOT STARTING WITH (V1 || ' '))) THEN AVALUE = V1 || ' ' || AVALUE;
  1846. END
  1847. ELSE IF (V1 IS NOT NULL) THEN AVALUE = V1 || ' ' || :AVALUE;
  1848. SUSPEND;
  1849. END
  1850.  ;
  1851.  
  1852.  
  1853. ALTER PROCEDURE "GET_NOM_FOUR" 
  1854. (
  1855.   "INVALUE" INTEGER
  1856. )
  1857. RETURNS
  1858. (
  1859.   "AVALUE" VARCHAR(85)
  1860. )
  1861. AS
  1862. DECLARE VARIABLE V1 VARCHAR(15);
  1863. DECLARE VARIABLE V2 VARCHAR(20);
  1864. BEGIN
  1865. SELECT C.DESIGNATION, T.PRENOM, T.NOM
  1866. FROM FOURNISSEURS T
  1867. LEFT JOIN CHAINES C ON (C.TYPEC=7) AND (C.LIGNE=T.CIVILITE-1) AND (C.COLONNE=0)
  1868. WHERE T.INDX = :INVALUE
  1869. INTO :V1,:V2,AVALUE;
  1870. IF (:V2<>'') THEN
  1871. BEGIN
  1872. AVALUE = V2 || ' ' || AVALUE;
  1873. IF ((V1 IS NOT NULL) AND (V2 NOT STARTING WITH (V1 || ' '))) THEN AVALUE = V1 || ' ' || AVALUE;
  1874. END
  1875. ELSE IF (V1 IS NOT NULL) THEN AVALUE = V1 || ' ' || :AVALUE;
  1876. SUSPEND;
  1877. END
  1878.  ;
  1879.  
  1880.  
  1881. ALTER PROCEDURE "GET_NOM_RAYON" 
  1882. (
  1883.   "INDX" INTEGER
  1884. )
  1885. RETURNS
  1886. (
  1887.   "R1" VARCHAR(40),
  1888.   "R2" VARCHAR(40),
  1889.   "R3" VARCHAR(40)
  1890. )
  1891. AS
  1892. DECLARE VARIABLE V1 VARCHAR(50);
  1893. DECLARE VARIABLE N1 SMALLINT;
  1894. DECLARE VARIABLE N2 SMALLINT;
  1895. DECLARE VARIABLE N3 SMALLINT;
  1896. BEGIN
  1897. SELECT RAYON,FAMILLE,SSFAMILLE FROM ARTICLES
  1898. WHERE (INDX = :INDX)
  1899. INTO N1,N2,N3;
  1900. SELECT NOMRAYON FROM RAYONS
  1901. WHERE (RY1=:N1) AND (RY2=0) AND (RY3=0)
  1902. INTO V1;
  1903. IF (V1 IS NULL) THEN
  1904. BEGIN
  1905. R1 = '?';
  1906. END
  1907. ELSE R1 = V1;
  1908. SELECT NOMRAYON FROM RAYONS
  1909. WHERE (RY1=:N1) AND (RY2=:N2) AND (RY3=0)
  1910. INTO V1;
  1911. IF (V1 IS NULL) THEN
  1912. BEGIN
  1913. R2 = '?';
  1914. END
  1915. ELSE R2 = V1;
  1916. SELECT NOMRAYON FROM RAYONS
  1917. WHERE (RY1=:N1) AND (RY2=:N2) AND (RY3=:N3)
  1918. INTO V1;
  1919. IF (V1 IS NULL) THEN
  1920. BEGIN
  1921. R3 = '?';
  1922. END
  1923. ELSE R3 = V1;
  1924. SUSPEND;
  1925. END
  1926.  ;
  1927.  
  1928.  
  1929. ALTER PROCEDURE "GET_NOM_TIERS" 
  1930. (
  1931.   "N1" SMALLINT,
  1932.   "N2" INTEGER
  1933. )
  1934. RETURNS
  1935. (
  1936.   "NOM_COMPLET" VARCHAR(200)
  1937. )
  1938. AS
  1939. DECLARE VARIABLE V1 VARCHAR(35);
  1940. DECLARE VARIABLE V2 VARCHAR(35);
  1941. DECLARE VARIABLE NOM VARCHAR(35);
  1942. DECLARE VARIABLE C SMALLINT;
  1943. BEGIN
  1944. IF (n1<13) THEN SELECT CIVILITE, PRENOM, NOM FROM CLIENTS WHERE INDX=:N2 INTO :C,:V2,NOM;
  1945.            ELSE SELECT CIVILITE, PRENOM, NOM FROM FOURNISSEURS WHERE INDX=:N2 INTO :C,:V2,NOM;
  1946. SELECT DESIGNATION FROM CHAINES WHERE TYPEC=7 AND LIGNE=:C-1 AND COLONNE=0 INTO :V1;
  1947. IF (:V2<>'') THEN
  1948.   BEGIN
  1949.   NOM_COMPLET = V2 || ' ' || NOM;
  1950.   IF ((V1 IS NOT NULL) AND (V2 NOT STARTING WITH (V1 || ' '))) THEN NOM_COMPLET = V1 || ' ' || NOM_COMPLET;
  1951.   END
  1952. ELSE IF (V1 IS NOT NULL) THEN
  1953.   BEGIN
  1954.   NOM_COMPLET = V1 || ' ' || NOM;
  1955.   END
  1956. ELSE NOM_COMPLET = NOM;
  1957. SUSPEND;
  1958. END
  1959.  ;
  1960.  
  1961.  
  1962. ALTER PROCEDURE "GET_PMPA" 
  1963. (
  1964.   "INDX" INTEGER
  1965. )
  1966. RETURNS
  1967. (
  1968.   "PMPA" DECIMAL(12, 2)
  1969. )
  1970. AS
  1971. DECLARE VARIABLE PRIX DECIMAL(14,6);
  1972. DECLARE VARIABLE QUANTITE DECIMAL(11,2);
  1973. DECLARE VARIABLE REMISE DECIMAL(5,2);
  1974. DECLARE VARIABLE OLD_PMPA DECIMAL(12,2);
  1975. DECLARE VARIABLE NOMBRE DECIMAL(14,6);
  1976. DECLARE VARIABLE CDA DECIMAL(11,2);
  1977. DECLARE VARIABLE TOTALPA DECIMAL(14,4);
  1978. BEGIN
  1979. TOTALPA=0;
  1980. NOMBRE=0;
  1981. /* Selectionner factures achat */
  1982. FOR SELECT PRIX,QUANTITE,REMISE FROM LIGNES L
  1983. JOIN PIECES P ON P.INDX=l.INDEXPIECE  AND TYPEPIECE=14
  1984. WHERE INDEXARTICLE=:INDX
  1985. AND QUANTITE IS NOT NULL
  1986. AND QUANTITE>0
  1987. INTO :PRIX,:QUANTITE,:REMISE DO
  1988.   BEGIN
  1989.   SELECT MAX(LOT) FROM ARTFOUR WHERE DPA=:PRIX AND INDXART=:INDX INTO CDA;
  1990.   IF ((CDA IS NOT NULL) AND (CDA>0)) THEN PRIX = PRIX / CDA;
  1991.   IF ((REMISE IS NOT NULL) AND (REMISE<>0)) THEN PRIX = PRIX * (100 - REMISE) / 100;
  1992.   TOTALPA = TOTALPA + (PRIX * QUANTITE);
  1993.   NOMBRE = NOMBRE + QUANTITE;
  1994.   END
  1995. IF (NOMBRE=0) THEN SELECT DPA FROM GET_LAST_DPA(:INDX) INTO :PMPA;
  1996. ELSE PMPA = TOTALPA / NOMBRE;
  1997. SELECT PMPA FROM ARTICLES WHERE INDX=:INDX INTO :OLD_PMPA;
  1998. IF ((OLD_PMPA IS NULL) OR (PMPA<>OLD_PMPA)) THEN UPDATE ARTICLES SET PMPA=:PMPA WHERE INDX=:INDX;
  1999. SUSPEND;
  2000. END
  2001.  ;
  2002.  
  2003.  
  2004. ALTER PROCEDURE "GET_PURGE" 
  2005. (
  2006.   "TYPEPURGE" SMALLINT,
  2007.   "RCH_TEMP" SMALLINT
  2008. )
  2009. RETURNS
  2010. (
  2011.   "INDXOUT" INTEGER,
  2012.   "DESI" VARCHAR(60)
  2013. )
  2014. AS
  2015. BEGIN
  2016. IF (TYPEPURGE=1) THEN
  2017. FOR SELECT INDX,NOM||' '||PRENOM  FROM CLIENTS WHERE TEMP=:RCH_TEMP ORDER BY NOM INTO :INDXOUT,:DESI DO SUSPEND;
  2018. ELSE IF (TYPEPURGE=2) THEN
  2019. FOR SELECT INDX,NOM||' '||PRENOM  FROM FOURNISSEURS WHERE TEMP=:RCH_TEMP ORDER BY NOM INTO :INDXOUT,:DESI DO SUSPEND;
  2020. ELSE IF (TYPEPURGE=3) THEN
  2021. FOR SELECT INDX,D.TEXTE FROM ARTICLES A LEFT JOIN DESIGNATIONS D ON D.INDXART=A.INDX AND CODELANGUE=1 WHERE TEMP=:RCH_TEMP ORDER BY 2 INTO :INDXOUT,:DESI DO SUSPEND;
  2022. END
  2023.  ;
  2024.  
  2025.  
  2026. ALTER PROCEDURE "GET_R123" 
  2027. (
  2028.   "INDX" INTEGER
  2029. )
  2030. RETURNS
  2031. (
  2032.   "R1" VARCHAR(40),
  2033.   "R2" VARCHAR(40),
  2034.   "R3" VARCHAR(40)
  2035. )
  2036. AS
  2037. DECLARE VARIABLE V1 VARCHAR(50);
  2038. DECLARE VARIABLE N1 SMALLINT;
  2039. DECLARE VARIABLE N2 SMALLINT;
  2040. DECLARE VARIABLE N3 SMALLINT;
  2041. BEGIN
  2042. SELECT RY1,RY2,RY3 FROM RAYONS WHERE PKEY = :INDX INTO :N1,:N2,:N3;
  2043. SELECT NOMRAYON FROM RAYONS WHERE (RY1=:N1) AND (RY2=0) AND (RY3=0) INTO :R1;
  2044. if (n2<>0) then
  2045.   begin
  2046.   SELECT NOMRAYON FROM RAYONS WHERE (RY1=:N1) AND (RY2=:N2) AND (RY3=0) INTO :R2;
  2047.   end
  2048. else
  2049.   begin
  2050.   R2 = '';
  2051.   end
  2052. if (n3<>0) then
  2053.   begin
  2054.   SELECT NOMRAYON FROM RAYONS WHERE (RY1=:N1) AND (RY2=:N2) AND (RY3=:N3) INTO :R3;
  2055.   end
  2056. else
  2057.   begin
  2058.   R3 = '';
  2059.   end
  2060. SUSPEND;
  2061. END
  2062.  ;
  2063.  
  2064.  
  2065. ALTER PROCEDURE "GET_RAYON_LIBRE" 
  2066. RETURNS
  2067. (
  2068.   "RY" SMALLINT
  2069. )
  2070. AS
  2071. DECLARE VARIABLE I INTEGER;
  2072. BEGIN
  2073. RY = 1;
  2074. WHILE (RY<99) DO
  2075.   BEGIN
  2076.   SELECT COUNT(*) FROM RAYONS WHERE RY1=:RY INTO I;
  2077.   IF (I>0) THEN RY = RY + 1;
  2078.   ELSE
  2079.     BEGIN
  2080.     UPDATE ARTICLES SET RAYON=0,FAMILLE=0,SSFAMILLE=0 WHERE RAYON=:RY;
  2081.     EXIT;
  2082.     END
  2083.   END
  2084. END
  2085.  ;
  2086.  
  2087.  
  2088. ALTER PROCEDURE "GET_REMISE_CLIENTS" 
  2089. (
  2090.   "DATEDEB" DATE,
  2091.   "DATEFIN" DATE
  2092. )
  2093. RETURNS
  2094. (
  2095.   "INDEX_CLIENT" INTEGER,
  2096.   "CA" DECIMAL(14, 2),
  2097.   "REMISE" DECIMAL(5, 2),
  2098.   "CA_TOTAL" DECIMAL(14, 2)
  2099. )
  2100. AS
  2101. BEGIN
  2102. FOR SELECT INDX FROM CLIENTS INTO :INDEX_CLIENT DO
  2103.   BEGIN
  2104.   SELECT "CA","CA_TOTAL" FROM GET_CA_CLIENT(:INDEX_CLIENT,:DATEDEB,:DATEFIN) INTO CA,CA_TOTAL;
  2105.   IF (CA IS NULL) THEN
  2106.     BEGIN
  2107.     REMISE=0;
  2108.     CA = 0;
  2109.     END
  2110.   ELSE SELECT "REMISE" FROM CALCUL_REMISE(:CA) INTO :REMISE;
  2111.   SUSPEND;
  2112.   END
  2113. END
  2114.  ;
  2115.  
  2116.  
  2117. ALTER PROCEDURE "GET_SFAMILLE_LIBRE" 
  2118. (
  2119.   "RY1" SMALLINT,
  2120.   "RY2" SMALLINT
  2121. )
  2122. RETURNS
  2123. (
  2124.   "RY3" SMALLINT
  2125. )
  2126. AS
  2127. DECLARE VARIABLE I INTEGER;
  2128. BEGIN
  2129. RY3 = 1;
  2130. WHILE (RY3<99) DO
  2131.   BEGIN
  2132.   SELECT COUNT(*) FROM RAYONS WHERE RY1=:RY1 AND RY2=:RY2 AND RY3=:RY3 INTO I;
  2133.   IF (I>0) THEN RY3 = RY3 + 1;
  2134.   ELSE
  2135.     BEGIN
  2136.     UPDATE ARTICLES SET SSFAMILLE=0 WHERE RAYON=:RY1 AND FAMILLE=:RY2 AND SSFAMILLE=:RY3;
  2137.     EXIT;
  2138.     END
  2139.   END
  2140. END
  2141.  ;
  2142.  
  2143.  
  2144. ALTER PROCEDURE "GET_TITREPC" 
  2145. (
  2146.   "INVALUE" INTEGER
  2147. )
  2148. RETURNS
  2149. (
  2150.   "AVALUE" VARCHAR(20)
  2151. )
  2152. AS
  2153. BEGIN
  2154. SELECT c.designation
  2155. from CHAINES C
  2156. WHERE (c.TYPEC=0)AND (c.LIGNE=:INVALUE) AND (C.COLONNE=0)
  2157. INTO AVALUE;
  2158. SUSPEND;
  2159. end
  2160.  ;
  2161.  
  2162.  
  2163. ALTER PROCEDURE "INTERROGATION_PONTA" 
  2164. AS
  2165. BEGIN EXIT; END
  2166.  ;
  2167.  
  2168.  
  2169. ALTER PROCEDURE "INTERROGATION_PONTV" 
  2170. AS
  2171. BEGIN EXIT; END
  2172.  ;
  2173.  
  2174.  
  2175. ALTER PROCEDURE "IV_ADD" 
  2176. (
  2177.   "NOCAISSE" SMALLINT
  2178. )
  2179. AS
  2180. DECLARE VARIABLE I INTEGER;
  2181. DECLARE VARIABLE Q DECIMAL(6,2);
  2182. DECLARE VARIABLE D DECIMAL(6,2);
  2183. DECLARE VARIABLE IV DECIMAL(6,2);
  2184. BEGIN
  2185. FOR SELECT INDXART,SUM(Q1) AS Q1 FROM LISTE WHERE NOCAISSE=:NOCAISSE GROUP BY INDXART INTO :I,:Q DO
  2186.  BEGIN
  2187.  SELECT DISPO,INVENTAIRE FROM ARTICLES WHERE INDX=:I INTO :D,:IV;
  2188.  IF (:IV IS NULL) THEN IV=Q-D; ELSE IV=Q+IV;
  2189.  UPDATE ARTICLES SET INVENTAIRE=:IV,DATEINVEN='NOW' WHERE INDX=:I;
  2190.  END
  2191. END
  2192.  ;
  2193.  
  2194.  
  2195. ALTER PROCEDURE "MAJ_AVOIR" 
  2196. (
  2197.   "INDEX_CLIENT" INTEGER
  2198. )
  2199. RETURNS
  2200. (
  2201.   "N_AVOIR" DECIMAL(14, 2)
  2202. )
  2203. AS
  2204. DECLARE VARIABLE AV1 DECIMAL(14,2);
  2205. DECLARE VARIABLE AV2 DECIMAL(14,2);
  2206. BEGIN
  2207. SELECT SUM(SOLDE) FROM PIECES WHERE SOLDE<0 AND Z=1 AND NOTIERS=:INDEX_CLIENT INTO AV1;
  2208. SELECT SUM(MONTANT) from VERSEMENTS V JOIN PIECES P ON V.TYPEV=3 AND V.INDEXPIECE=P.INDX AND P.Z=1 AND NOTIERS=:INDEX_CLIENT INTO :AV2;
  2209. N_AVOIR = -:AV1 - :AV2;
  2210. SELECT AVOIR FROM CLIENTS WHERE INDX=:INDEX_CLIENT INTO :AV1;
  2211. IF (AV1<>N_AVOIR) THEN UPDATE CLIENTS SET AVOIR=:N_AVOIR WHERE INDX=:INDEX_CLIENT;
  2212. SUSPEND;
  2213. end
  2214.  ;
  2215.  
  2216.  
  2217. ALTER PROCEDURE "MAJ_PURGE" 
  2218. (
  2219.   "INDEXP" INTEGER
  2220. )
  2221. AS
  2222. DECLARE VARIABLE V1 SMALLINT;
  2223. DECLARE VARIABLE I INTEGER;
  2224. BEGIN
  2225. SELECT TYPEPIECE,NOTIERS FROM PIECES WHERE INDX=:INDEXP INTO :V1,:I;
  2226. IF (:I>0) THEN
  2227. BEGIN
  2228. IF (:V1<13) THEN
  2229. UPDATE CLIENTS SET TEMP=1 WHERE INDX=:I AND TEMP<>1;
  2230. ELSE
  2231. UPDATE FOURNISSEURS SET TEMP=1 WHERE INDX=:I AND TEMP<>1;
  2232. END
  2233. FOR SELECT INDEXARTICLE FROM LIGNES WHERE INDEXPIECE=:INDEXP
  2234. AND INDEXARTICLE IS NOT NULL AND INDEXARTICLE>0
  2235. GROUP BY INDEXARTICLE
  2236. INTO :I
  2237. DO UPDATE ARTICLES SET TEMP=1 WHERE INDX=:I AND TEMP<>1;
  2238. END
  2239.  ;
  2240.  
  2241.  
  2242. ALTER PROCEDURE "MAJ_STOCK_ARTICLE" 
  2243. (
  2244.   "INDEXA" INTEGER,
  2245.   "Q" DECIMAL(11, 2),
  2246.   "TYPEMVT" SMALLINT
  2247. )
  2248. AS
  2249. DECLARE VARIABLE S SMALLINT;
  2250. BEGIN
  2251. SELECT SUIVI FROM ARTICLES WHERE INDX=:INDEXA INTO :S;
  2252. IF (S<>0) THEN
  2253.   BEGIN
  2254.   IF (TYPEMVT=4) THEN TYPEMVT=0;
  2255.    /* TICKET, FACTURE */
  2256.   IF (TYPEMVT=0) THEN UPDATE ARTICLES SET DISPO=DISPO-:Q WHERE INDX=:INDEXA;
  2257.   /* RESERVATION */
  2258.   ELSE IF (TYPEMVT=2) THEN UPDATE ARTICLES SET DISPO=DISPO-:Q,RESERVE=RESERVE+:Q WHERE INDX=:INDEXA;
  2259.   /* BL */
  2260.   ELSE IF (TYPEMVT=3) THEN UPDATE ARTICLES SET DISPO=DISPO-:Q,BL_CLIENT=BL_CLIENT+:Q WHERE INDX=:INDEXA;
  2261.   /* PRET */
  2262.   ELSE IF (TYPEMVT=5) THEN UPDATE ARTICLES SET DISPO=DISPO-:Q,EN_PRET=EN_PRET+:Q WHERE INDX=:INDEXA;
  2263.   /* SAV */
  2264.   ELSE IF (TYPEMVT=6) THEN UPDATE ARTICLES SET EN_SAV=EN_SAV+:Q WHERE INDX=:INDEXA;
  2265.   /* RETOUR SAV */
  2266.   ELSE IF (TYPEMVT=7) THEN UPDATE ARTICLES SET EN_SAV=EN_SAV-:Q WHERE INDX=:INDEXA;
  2267.   /* AVOIR */
  2268.   ELSE IF (TYPEMVT=8) THEN UPDATE ARTICLES SET DISPO=DISPO+:Q WHERE INDX=:INDEXA;
  2269.   /* COMMANDE */
  2270.   ELSE IF (TYPEMVT=13) THEN UPDATE ARTICLES SET EN_COMMANDE=EN_COMMANDE+:Q WHERE INDX=:INDEXA;
  2271.   /* LIVRAISON */
  2272.   ELSE IF (TYPEMVT=14) THEN UPDATE ARTICLES SET DISPO=DISPO+:Q WHERE INDX=:INDEXA;
  2273.   END
  2274. END
  2275.  ;
  2276.  
  2277.  
  2278. ALTER PROCEDURE "MAJ_STOCK_PIECE" 
  2279. (
  2280.   "INDEXP" INTEGER,
  2281.   "DELTA" SMALLINT
  2282. )
  2283. AS
  2284. DECLARE VARIABLE V1 SMALLINT;
  2285. DECLARE VARIABLE I INTEGER;
  2286. DECLARE VARIABLE IB INTEGER;
  2287. DECLARE VARIABLE Q DECIMAL(11,2);
  2288. DECLARE VARIABLE Q1 DECIMAL(11,2);
  2289. BEGIN
  2290. /* DΘterminer ce que la piΦce doit faire comme type de mouvement de stock */
  2291. SELECT TYPESTOCK FROM PIECES WHERE INDX=:INDEXP AND TYPESTOCK<>1 AND STATUT IN (0,3) INTO V1;
  2292. IF (V1 IS NOT NULL) THEN
  2293.   BEGIN
  2294.   FOR SELECT INDEXARTICLE,SUM(QUANTITE),SUM(QTE_LIVRE) FROM LIGNES
  2295.   WHERE INDEXPIECE=:INDEXP
  2296.         AND INDEXARTICLE IS NOT NULL AND INDEXARTICLE>0
  2297.         AND QUANTITE IS NOT NULL AND QUANTITE<>0
  2298.   GROUP BY INDEXARTICLE
  2299.   INTO :I,:Q,:Q1
  2300.   DO
  2301.     BEGIN
  2302.     IF (Q IS NULL) THEN Q=0;
  2303.     IF (Q1 IS NOT NULL) THEN Q=Q-Q1;
  2304.     Q =Q * :DELTA;
  2305.     IF (Q<>0) THEN
  2306.       BEGIN
  2307.       EXECUTE PROCEDURE MAJ_STOCK_ARTICLE(:I,:Q,:V1);
  2308.       /* Faire les bundles */
  2309.       FOR SELECT INDX_2,QTE FROM BUNDLE WHERE INDX_1=:I INTO :IB,:Q1 DO
  2310.         BEGIN
  2311.         EXECUTE PROCEDURE MAJ_STOCK_ARTICLE(:IB,:Q*:Q1,:V1);
  2312.         END
  2313.       END
  2314.     END /* DO */
  2315.   END
  2316. END
  2317.  ;
  2318.  
  2319.  
  2320. ALTER PROCEDURE "RAZ_PURGE" 
  2321. AS
  2322. BEGIN
  2323. UPDATE CLIENTS SET TEMP=0;
  2324. UPDATE FOURNISSEURS SET TEMP=0;
  2325. UPDATE ARTICLES SET TEMP=0;
  2326. UPDATE PIECES SET TEMP=0;
  2327. UPDATE CLIENTS SET PRENOM='' WHERE PRENOM IS NULL;
  2328. UPDATE FOURNISSEURS SET PRENOM='' WHERE PRENOM IS NULL;
  2329. END
  2330.  ;
  2331.  
  2332.  
  2333. ALTER PROCEDURE "SET_LIVRE" 
  2334. (
  2335.   "INDXPIECE" INTEGER
  2336. )
  2337. AS
  2338. DECLARE VARIABLE N INTEGER;
  2339. DECLARE VARIABLE OLD_L SMALLINT;
  2340. DECLARE VARIABLE NEW_L SMALLINT;
  2341. BEGIN
  2342. SELECT TYPEPIECE,LIVRE FROM PIECES WHERE INDX=:INDXPIECE INTO :N,:OLD_L;
  2343. IF (N IN (1,2,3,13)) THEN  /* TESTER SI QTE */
  2344.   begin
  2345.   SELECT COUNT(*) FROM LIGNES
  2346.   WHERE INDEXPIECE=:INDXPIECE AND (QUANTITE IS NULL OR QTE_LIVRE IS NULL OR QUANTITE<>QTE_LIVRE)
  2347.   INTO :N;
  2348.   /* N=0 donc pas de lignes ou la quantitΘ livrΘ diffΦre de la quantitΘ initiale, donc piΦce livrΘe */
  2349.   IF (N=0) THEN NEW_L=1; ELSE NEW_L=0;
  2350.   END
  2351. ELSE NEW_L=NULL;
  2352. IF (OLD_L IS NULL AND NEW_L IS NULL) THEN EXIT;
  2353. IF (OLD_L IS NULL OR NEW_L IS NULL OR (OLD_L<>NEW_L)) THEN UPDATE PIECES SET LIVRE=:NEW_L WHERE INDX=:INDXPIECE;
  2354. end
  2355.  ;
  2356.  
  2357.  
  2358. ALTER PROCEDURE "SET_NBR_LIGNES" 
  2359. (
  2360.   "INDXPIECE" INTEGER,
  2361.   "DELP" SMALLINT
  2362. )
  2363. AS
  2364. DECLARE VARIABLE N INTEGER;
  2365. BEGIN
  2366. SELECT COUNT(*) FROM LIGNES WHERE INDEXPIECE=:INDXPIECE INTO :N;
  2367. IF ((DELP<>0) AND (N=0)) THEN DELETE FROM PIECES WHERE INDX=:INDXPIECE;
  2368. ELSE UPDATE PIECES SET NBR_LIGNES=:N WHERE INDX=:INDXPIECE;
  2369. END
  2370.  ;
  2371.  
  2372.  
  2373. ALTER PROCEDURE "SET_VERROU" 
  2374. (
  2375.   "INDXPIECE" INTEGER,
  2376.   "PLIVRE" SMALLINT,
  2377.   "REGROUPE" SMALLINT,
  2378.   "PAYE" SMALLINT
  2379. )
  2380. AS
  2381. DECLARE VARIABLE N INTEGER;
  2382. DECLARE VARIABLE V_Z SMALLINT;
  2383. DECLARE VARIABLE V_SOLDE DECIMAL(14,4);
  2384. DECLARE VARIABLE V_LIVRE SMALLINT;
  2385. DECLARE VARIABLE V_GROUP INTEGER;
  2386. DECLARE VARIABLE V_STAT SMALLINT;
  2387. DECLARE VARIABLE NEW_STAT SMALLINT;
  2388. BEGIN
  2389. SELECT Z,SOLDE,LIVRE,REGROUPE_DANS,STATUT FROM PIECES WHERE INDX=:INDXPIECE
  2390.   INTO :V_Z,:V_SOLDE,:V_LIVRE,V_GROUP,V_STAT;
  2391. /* SEUL LES PIECES NORMALES (STATUT=0) OU ARCHIVEES (STATUT=1) SONT A FAIRE */
  2392. IF (V_STAT>1) THEN EXIT;
  2393.  
  2394. NEW_STAT=0;
  2395.  
  2396. /* CONDITION DE VERROUILLAGE */
  2397. IF (
  2398. (:PAYE=1 AND V_Z=1 AND V_SOLDE=0)
  2399. OR
  2400. (:PLIVRE=1 AND V_LIVRE=1)
  2401. OR
  2402. (REGROUPE=1 AND V_GROUP>0)
  2403. ) THEN
  2404.   BEGIN
  2405.   NEW_STAT=1;
  2406.   /*CONDITION DE DEVERROUILLAGE */
  2407.   IF (
  2408.   (:PAYE=1 AND V_Z=1 AND V_SOLDE<>0)
  2409.   OR
  2410.   (:PLIVRE=1 AND V_LIVRE=0)
  2411.   ) THEN NEW_STAT=0;
  2412.   END
  2413.  
  2414. IF (NEW_STAT<>V_STAT) THEN UPDATE PIECES SET STATUT=:NEW_STAT WHERE INDX=:INDXPIECE;
  2415. EXIT;
  2416. end
  2417.  ;
  2418.  
  2419.  
  2420. ALTER PROCEDURE "UPDATE_REMISE_CLIENTS" 
  2421. (
  2422.   "DATEDEB" DATE,
  2423.   "DATEFIN" DATE
  2424. )
  2425. AS
  2426. DECLARE VARIABLE "INDEX_CLIENT" INTEGER;
  2427. DECLARE VARIABLE "CA" DECIMAL(14, 2);
  2428. DECLARE VARIABLE "REMISE" DECIMAL(5, 2);
  2429. BEGIN
  2430. FOR SELECT INDX FROM CLIENTS INTO :INDEX_CLIENT DO
  2431.   BEGIN
  2432.   SELECT "CA" FROM GET_CA_CLIENT(:INDEX_CLIENT,:DATEDEB,:DATEFIN) INTO :CA;
  2433.   IF (CA IS NULL) THEN REMISE=0;
  2434.   ELSE SELECT "REMISE" FROM CALCUL_REMISE(:CA) INTO :REMISE;
  2435.   UPDATE CLIENTS SET "REMISE"=:REMISE WHERE "INDX"=:INDEX_CLIENT;
  2436.   END
  2437. END
  2438.  ;
  2439.  
  2440.  
  2441. ALTER PROCEDURE "VALEUR_STOCK" 
  2442. RETURNS
  2443. (
  2444.   "S_INDEX" INTEGER,
  2445.   "S_RAYON" SMALLINT,
  2446.   "S_DISPO" DECIMAL(12, 2),
  2447.   "S_INVENTAIRE" DECIMAL(12, 2)
  2448. )
  2449. AS
  2450. DECLARE variable P1 DECIMAL(12,2);
  2451. DECLARE variable Q1 DECIMAL(6,2);
  2452. DECLARE variable Q2 DECIMAL(6,2);
  2453. DECLARE VARIABLE N1 INTEGER;
  2454. DECLARE VARIABLE N2 INTEGER;
  2455. BEGIN
  2456. For SELECT INDX,RAYON,PMPA,DISPO,INVENTAIRE,DERFOUR FROM ARTICLES
  2457. WHERE SUIVI<>0
  2458. INTO :S_INDEX,S_RAYON,:P1,:Q1,:Q2,:N1 do
  2459. begin
  2460. IF (P1 IS NULL) THEN
  2461. BEGIN
  2462. SELECT MIN(DPA) FROM ARTFOUR WHERE INDXART=:S_INDEX AND CODEFOUR=:N1 INTO :P1;
  2463. IF (P1 IS NULL) THEN
  2464. BEGIN
  2465. SELECT MIN(DPA) FROM ARTFOUR WHERE INDXART=:S_INDEX INTO :P1;
  2466. END
  2467. END
  2468. S_DISPO = P1 * Q1;
  2469. IF (Q2 IS NULL) THEN S_INVENTAIRE = S_DISPO; ELSE S_INVENTAIRE = P1 * (Q1+Q2);
  2470. SUSPEND;
  2471. end
  2472. END
  2473.  ;
  2474.  
  2475. COMMIT WORK;
  2476. SET AUTODDL ON;
  2477.  
  2478. /* Triggers only will work for SQL triggers */
  2479.  
  2480. CREATE TRIGGER "SETPK_ADRESSE" FOR "ADRESSES" 
  2481. ACTIVE BEFORE INSERT POSITION 0
  2482. as
  2483.     begin
  2484.     if (new."INDX" IS NULL) THEN
  2485.     new."INDX" = GEN_ID(GENPK_ADRESSE,1);
  2486.     end
  2487.  ;
  2488.  
  2489. CREATE TRIGGER "SETPK_ARTFOUR" FOR "ARTFOUR" 
  2490. ACTIVE BEFORE INSERT POSITION 0
  2491. as
  2492.     begin
  2493.     if (new."INDEXAF" IS NULL) THEN
  2494.     new."INDEXAF" = GEN_ID(GENPK_ARTFOUR,1);
  2495.     end
  2496.  ;
  2497.  
  2498. CREATE TRIGGER "SETPK_ART" FOR "ARTICLES" 
  2499. ACTIVE BEFORE INSERT POSITION 0
  2500. as
  2501.     begin
  2502.     if (new."INDX" IS NULL) THEN 
  2503.     new."INDX" = GEN_ID(GENPK_ART,1);
  2504.     end
  2505.  ;
  2506.  
  2507. CREATE TRIGGER "ADD_DISPO" FOR "ARTICLES" 
  2508. INACTIVE AFTER INSERT POSITION 0
  2509. as
  2510.     begin
  2511.     INSERT INTO HISTO_DISPO (INDX,"USER",DATEMODIF,NEW_DISPO,DELTA) VALUES (new."INDX",USER,'NOW',NEW."DISPO",NEW."DISPO");
  2512.     INSERT INTO HISTO_INVEN (INDX,"USER",DATEMODIF,NEW_INVEN,DELTA) VALUES (new."INDX",USER,'NOW',NEW."INVENTAIRE",NEW."INVENTAIRE");
  2513.     end
  2514.  ;
  2515.  
  2516. CREATE TRIGGER "SET_DATEMODIF_A" FOR "ARTICLES" 
  2517. ACTIVE BEFORE UPDATE POSITION 0
  2518. as
  2519.     begin
  2520.     new."DATEMODIF" = 'NOW';
  2521.     end
  2522.  ;
  2523.  
  2524. CREATE TRIGGER "ADD_DISPO1" FOR "ARTICLES" 
  2525. INACTIVE AFTER UPDATE POSITION 0
  2526. as
  2527.     begin
  2528.     if (old."DISPO" IS NULL AND new."DISPO" IS NOT NULL) THEN INSERT INTO HISTO_DISPO (INDX,"USER",DATEMODIF,ANC_DISPO,NEW_DISPO,DELTA) VALUES (new."INDX",USER,'NOW',old."DISPO",NEW."DISPO",NEW."DISPO");
  2529.     ELSE
  2530.       begin
  2531.       if (old."DISPO" IS NOT NULL AND new."DISPO" IS NULL) THEN INSERT INTO HISTO_DISPO (INDX,"USER",DATEMODIF,ANC_DISPO,NEW_DISPO,DELTA) VALUES (new."INDX",USER,'NOW',old."DISPO",NEW."DISPO",-OLD."DISPO");
  2532.       else
  2533.         begin
  2534.         if (new."DISPO"<>old."DISPO") THEN INSERT INTO HISTO_DISPO (INDX,"USER",DATEMODIF,ANC_DISPO,NEW_DISPO,DELTA) VALUES (new."INDX",USER,'NOW',old."DISPO",NEW."DISPO",NEW."DISPO"-OLD."DISPO");
  2535.         end
  2536.       end
  2537.     if (old."INVENTAIRE" IS NULL AND new."INVENTAIRE" IS NOT NULL) THEN INSERT INTO HISTO_INVEN (INDX,"USER",DATEMODIF,ANC_INVEN,NEW_INVEN,DELTA) VALUES (new."INDX",USER,'NOW',old."INVENTAIRE",NEW."INVENTAIRE",NEW."INVENTAIRE");
  2538.     ELSE
  2539.       begin
  2540.       if (old."INVENTAIRE" IS NOT NULL AND new."INVENTAIRE" IS NULL) THEN INSERT INTO HISTO_INVEN (INDX,"USER",DATEMODIF,ANC_INVEN,NEW_INVEN,DELTA) VALUES (new."INDX",USER,'NOW',old."INVENTAIRE",NEW."INVENTAIRE",-OLD."INVENTAIRE");
  2541.       else
  2542.         begin
  2543.         if (new."INVENTAIRE"<>old."INVENTAIRE") THEN INSERT INTO HISTO_INVEN (INDX,"USER",DATEMODIF,ANC_INVEN,NEW_INVEN,DELTA) VALUES (new."INDX",USER,'NOW',old."INVENTAIRE",NEW."INVENTAIRE",NEW."INVENTAIRE"-OLD."INVENTAIRE");
  2544.         end
  2545.       end
  2546.     end
  2547.  ;
  2548.  
  2549. CREATE TRIGGER "SETPK_BLOB" FOR "BLOBS" 
  2550. ACTIVE BEFORE INSERT POSITION 0
  2551. AS
  2552. BEGIN
  2553. IF (NEW."INDX" IS NULL) THEN
  2554. NEW."INDX" = GEN_ID(GENPK_BLOBS,1);
  2555. END
  2556.  ;
  2557.  
  2558. CREATE TRIGGER "BLOB_CHANGE" FOR "BLOBS" 
  2559. ACTIVE AFTER UPDATE POSITION 0
  2560. AS
  2561. BEGIN
  2562. IF (new.indx=1) THEN POST_EVENT 'MODIF_BLOB1';
  2563. END
  2564.  ;
  2565.  
  2566. CREATE TRIGGER "SETPK_CLIENT" FOR "CLIENTS" 
  2567. ACTIVE BEFORE INSERT POSITION 0
  2568. as
  2569.     begin
  2570.     if (new."INDX" IS NULL) THEN 
  2571.     new."INDX" = GEN_ID(GENPK_CLIENT,1);
  2572.     end
  2573.  ;
  2574.  
  2575. CREATE TRIGGER "SET_DATEMODIF" FOR "CLIENTS" 
  2576. ACTIVE BEFORE UPDATE POSITION 0
  2577. as
  2578.     begin
  2579.     new."DATEMODIF" = 'NOW';
  2580.     end
  2581.  ;
  2582.  
  2583. CREATE TRIGGER "SETPK_ETAT" FOR "ETATS" 
  2584. ACTIVE BEFORE INSERT POSITION 0
  2585. as
  2586.     begin
  2587.     if (new."INDX" IS NULL) THEN
  2588.     new."INDX" = GEN_ID(GENPK_ETATS,1);
  2589.     end
  2590.  ;
  2591.  
  2592. CREATE TRIGGER "SETPK_FOUR" FOR "FOURNISSEURS" 
  2593. ACTIVE BEFORE INSERT POSITION 0
  2594. as
  2595.     begin
  2596.     if (new."INDX" IS NULL) THEN 
  2597.     new."INDX" = GEN_ID(GENPK_FOUR,1);
  2598.     end
  2599.  ;
  2600.  
  2601. CREATE TRIGGER "SET_DATEMODIF_F" FOR "FOURNISSEURS" 
  2602. ACTIVE BEFORE UPDATE POSITION 0
  2603. as
  2604.     begin
  2605.     new."DATEMODIF" = 'NOW';
  2606.     end
  2607.  ;
  2608.  
  2609. CREATE TRIGGER "SETPK_LANGUES" FOR "LANGUES" 
  2610. ACTIVE BEFORE INSERT POSITION 0
  2611. as
  2612.     begin
  2613.     if (new."INDX" IS NULL) THEN
  2614.     new."INDX" = GEN_ID(GENPK_LANGUES,1);
  2615.     end
  2616.  ;
  2617.  
  2618. CREATE TRIGGER "SETPK_LISTE" FOR "LISTE" 
  2619. ACTIVE BEFORE INSERT POSITION 0
  2620. as
  2621.     begin
  2622.     if (new."INDX" IS NULL) THEN
  2623.     new."INDX" = GEN_ID(GENPK_LISTE,1);
  2624.     end
  2625.  ;
  2626.  
  2627. CREATE TRIGGER "SETPK_MACRO" FOR "MACROS" 
  2628. ACTIVE BEFORE INSERT POSITION 0
  2629. as
  2630.     begin
  2631.     if (new."INDX" IS NULL) THEN
  2632.     new."INDX" = GEN_ID(GENPK_ART,1);
  2633.     end
  2634.  ;
  2635.  
  2636. CREATE TRIGGER "TRI_PRIXVENTE" FOR "PRIXVENTE" 
  2637. ACTIVE BEFORE UPDATE POSITION 0
  2638. as
  2639.     begin
  2640.     new."DATEMODIF" = 'NOW';
  2641.     end
  2642.  ;
  2643.  
  2644. CREATE TRIGGER "SETPK_SOCIETE" FOR "SOCIETES" 
  2645. ACTIVE BEFORE INSERT POSITION 0
  2646. as
  2647.     begin
  2648.     if (new."INDX" IS NULL) THEN
  2649.     new."INDX" = GEN_ID(GENPK_SOCIETE,1);
  2650.     end
  2651.  ;
  2652.  
  2653. CREATE TRIGGER "SET_DATEMODIF_S" FOR "SOCIETES" 
  2654. ACTIVE BEFORE UPDATE POSITION 0
  2655. as
  2656.     begin
  2657.     new."DATEMODIF" = 'NOW';
  2658.     end
  2659.  ;
  2660.  
  2661. CREATE TRIGGER "SETPK_USER" FOR "VENDEURS" 
  2662. ACTIVE BEFORE INSERT POSITION 0
  2663. AS
  2664. BEGIN
  2665. IF (NEW."INDX" IS NULL) THEN
  2666. NEW."INDX" = GEN_ID(GENPK_USER,1);
  2667. END
  2668.  ;
  2669.  
  2670. COMMIT WORK ;
  2671.  
  2672. /* Grant Roles for this database */
  2673.  
  2674.  
  2675. /* Grant permissions for this database */
  2676.  
  2677.